Laravel 8: Загрузка нескольких типов файлов с проверкой
Из этого туториала Вы узнаете, как загрузить несколько файлов в приложение laravel 8 с проверкой.
Иногда вам нужно загрузить более одного файла (несколько файлов) с проверкой в приложении laravel 8.
Итак, в этом руководстве вы с нуля научитесь загружать несколько файлов в laravel 8 с проверкой. Кроме того мы выполним проверку нескольких типов загружаемых файлов, таких как pdf, txt, CSV, excel, doc, перед сохранением в базе данных и папку в приложении laravel 8.
Загрузка нескольких файлов с проверкой в Laravel 8
Используйте следующие шаги, чтобы выполнить загрузку нескольких типов файлов с проверкой в приложениях laravel 8:
Шаг 1 - Построение модели и миграция
На этом шаге откройте командную строку и запустите в ней следующую команду, чтобы создать файлы модели и миграции:
php artisan make:model File -m
После этого откройте файл create_files_table.php в каталоге /database/migrations/ и обновите функцию up() следующим кодом:
public function up()
{
Schema::create('files', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('path');
$table->timestamps();
});
}
Затем снова откройте командную строку и выполните следующую команду для создания таблиц в базе данных:
php artisan migrate
Шаг 2 - Создайте маршруты
На этом этапе откройте файл web.php из директории routes и обновите следующие маршруты в файле web.php:
use App\Http\Controllers\MultiFileUploadController;
Route::get('files-upload', [MultiFileUploadController::class, 'index']);
Route::post('save-multiple-files', [MultiFileUploadController::class, 'store']);
Шаг 3 - Создайте контроллер мультизагрузки с помощью Artisan
На этом этапе выполните следующую команду в командной строке, чтобы создать файл контроллера:
php artisan make:controller MultiFileUploadController
После этого перейдите в app/http/controllers и откройте файл MultiFileUploadController.php и обновите в нем следующий код:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\File;
class MultiFileUploadController extends Controller
{
public function index()
{
return view('multiple-files-upload');
}
public function store(Request $request)
{
$validatedData = $request->validate([
'files' => 'required',
'files.*' => 'mimes:csv,txt,xlx,xls,pdf'
]);
if($request->hasfile('files'))
{
foreach($request->file('files') as $key => $file)
{
$path = $file->store('public/files');
$name = $file->getClientOriginalName();
$insert[$key]['name'] = $name;
$insert[$key]['path'] = $path;
}
}
File::insert($insert);
return redirect('files-upload')->with('status', 'Несколько файлов загружены успешно');
}
}
Обратите внимание, что приведенный ниже код загрузит файл в директорию /files/:
$path = $request->file('file')->store('public/files');
Шаг 4 - Создайте форму загрузки нескольких файлов
Теперь создайте форму загрузки нескольких файлов в файле представления для отображения формы загрузки нескольких файлов и отправьте ее в базу данных.
Итак, перейдите к resources/views и создайте multiple-files-upload.php и обновите в нем следующий код:
<!DOCTYPE html>
<html>
<head>
<title>Multiple File Upload in Laravel 8 - MakeCodes.ru</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
@if(session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<h2 class="text-center">Laravel 8 Multiple File Upload With Validation - MakeCodes.ru</h2>
<div class="text-center">
<form name="save-multiple-files" method="POST" action="{{ url('save-multiple-files') }}" accept-charset="utf-8" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="file" name="files[]" placeholder="Выбрать файлы" multiple >
</div>
@error('files')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-primary" id="submit">Отправить</button>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
Обратите внимание, что приведенный ниже код отобразит сообщение об ошибке проверки в файле представления:
@error('files')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
Шаг 5 - Создайте каталог внутри Storage/app/public
Теперь создайте файлы с именами каталогов внутри каталога storage/app/public поскольку следующая строка кода загрузит файл в каталог files, который находится внутри каталога storage/app/public/:
$path = $request->file('file')->store('public/files');
Шаг 6 - Запустите сервер разработки
Последний шаг, откройте командную строку и выполните следующую команду, чтобы запустить сервер разработки:
php artisan serve
Затем откройте в браузере следующий URL:
http://127.0.0.1:8000/files-upload
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.