Загрузка файлов в 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


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