• Загрузка файлов в Laravel

    LaravelКомментариев нет

    Добавим страницу загрузки form.blade.php (\resources\views)

    <html>
    <title>Import</title>
    <body>
    <h1>Загрузка файлов</h1>
    
    <form action="{{ URL::to('/upload') }}" enctype="multipart/form-data" method="post">
        <label for="file">Файл: <input type="file" name="file" value=""></label>
        <br/>
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <button type="submit">Отправить</button>
    </form>
    
    </body>
    </html>

    Добавим контроллер для загрузки файлов(в нем будет 2 функции. вывод формы и загрузка файла).

    php artisan make:controller UploadController

    Добавим роутеры \routes\web.php

    // upload form
    Route::get('/', 'UploadController@store');
    // action upload
    Route::post('/upload', 'UploadController@upload');

    Добавим в контроллер функцию store для отображения формы, а так же функцию upload для загрузки файла.

    Предоставлю полный код класса

    <?php
    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Storage;
    
    
    class UploadController extends Controller
    {
        
        public function store()
        {
            return view("form");
        }
    
        
        public function upload(Request $request)
        {        
                // загрузим и получим ссылку на файл
                $file_path = $request->file('file')->store('public');
                dd($file_path);
    
               /* дополнительно */
    
               // полный url файла
               // Storage::url($csv)
    
               // удаление файла
               // Storage::delete($csv);
    
              // более подробнее читайте тут: 
              // https://laravel.com/docs/5.7/filesystem
    
            } catch (\Exception $e) {
                echo 'Произошла ошибка! ' . $e->getMessage();           
            }       
        }
    }

    Для того что бы файл был доступен по ссылке, нужно выполнить команду:

    //
    php artisan storage:link

     

    Дополнительно: https://laravel.com/docs/5.7/filesystem


    Комментарии закрыты!