
Загрузка файлов - распространенная функция в веб-приложениях, и 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 в 2026-2027 годах? Или это полная лажа?".

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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.