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

RedDeveloper
17.04.2023 08:52
Laravel выгрузка файлов

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

Удачи.😈

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.