Загрузка файлов - распространенная функция в веб-приложениях, и Laravel позволяет очень просто работать с загрузкой файлов. В этой статье мы рассмотрим, как загружать файлы в Laravel с помощью миграций.
Во-первых, давайте создадим новый проект Laravel. Откройте терминал или командную строку и перейдите в каталог, где вы хотите создать проект. Затем выполните следующую команду:
composer create-project --prefer-dist laravel/laravel file-upload
Это создаст новый проект Laravel с именем "file-upload" в текущей директории.
Далее, давайте создадим новую миграцию для таблицы файлов. Выполните следующую команду в терминале:
php artisan make:migration create_files_table
Это создаст новый файл миграции в каталоге "database/migrations". Откройте файл и измените метод "up" следующим образом:
public function up() { Schema::create('files', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('path'); $table->timestamps(); }); }
Эта миграция создаст таблицу "files" со столбцами для имени файла, пути и временных меток. Теперь запустим миграцию для создания таблицы в базе данных:
php artisan migrate
Теперь, когда база данных настроена, давайте создадим форму для загрузки файлов. Откройте файл "resources/views/welcome.blade.php" и добавьте следующий код:
<form method="POST" action="{{ route('upload') }}" enctype="multipart/form-data"> @csrf <input type="file" name="file"> <button type="submit">Upload</button> </form>
Эта форма включает в себя ввод файла и кнопку отправки. Атрибут "enctype" установлен в "multipart/form-data", чтобы разрешить загрузку файлов.
Далее создадим маршрут для загрузки файла. Откройте файл "routes/web.php" и добавьте следующий код:
use App\Http\Controllers\FileController; Route::post('/upload', [FileController::class, 'upload'])->name('upload');
Этот маршрут сопоставляет URL "/upload" с методом "upload" контроллера "FileController". Мы еще не создали контроллер, поэтому давайте сделаем это сейчас. Выполните следующую команду в терминале:
php artisan make:controller FileController
Это создаст новый файл контроллера в каталоге "app/Http/Controllers". Откройте файл и добавьте следующий код:
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\File; class FileController extends Controller { public function upload(Request $request) { $file = $request->file('file'); $name = $file->getClientOriginalName(); $path = $file->store('public/files'); $file = new File; $file->name = $name; $file->path = $path; $file->save(); return redirect('/')->with('success', 'File uploaded successfully.'); } }
Этот метод контроллера обрабатывает загрузку файла. Сначала он извлекает загруженный файл из запроса с помощью метода "file". Затем он получает оригинальное имя файла и сохраняет его в каталоге "public/files" с помощью метода "store". Наконец, он создает новый экземпляр модели "File", устанавливает свойства name и path и сохраняет модель в базе данных.
Теперь, если вы перейдете на главную страницу вашего приложения Laravel и загрузите файл, он должен быть сохранен в каталоге "public/files", а в таблице "files" будет создана новая запись.
Удачи.😈
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.