Загрузка изображения в Laravel

Загрузка изображение через Laravel выглядит так:

(Создаем модель, контроллер. Это, наверняка понятно.)
(Также устанавливаем дополнение composer require laravelcollective/html)

Перед всем этим действием без лишних вопросов выполяем команду

php artisan storage:link

В Blade шаблоне прописываем {{Form::file('main_image')}}

В методе store / save такую конструкцию:

// Проверка, хотя можно обойтись и без нее
$this->validate($request, [
  'main_image' => 'image|nullable|max:1999',
]);

// Если есть файл
if( $request->hasFile('main_image')){
  // Имя и расширение файла
  $filenameWithExt = $request->file('main_image')->getClientOriginalName();
  // Только оригинальное имя файла
  $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
  // Расширение
  $extention = $request->file('main_image')->getClientOriginalExtension();
  // Путь для сохранения
  $fileNameToStore = "main_image/".$filename."_".time().".".$extention;
  // Сохраняем файл
  $path = $request->file('main_image')->storeAs('public/', $fileNameToStore);
}

// При выводе файла на странице нудно будет прибавить в начале "storage/"
$fileNameToStore . "storage/";

Загрузка нескольких изображений

Схема будем немного отличаться.

В Blade шаблоне прописываем {{Form::file('images[]', ['multiple'])}}

В методе store / save

// ...
$deal_item = Deal::find($id); // Наша модель

$this->validate($request, [
  'main_image.*' => 'image|nullable|max:1999',
]);

// Обрабатываем несколько фотографий
if($request->hasFile('images'))
{
  $images = $deal_item->images;
  $files = $request->file('images');
  foreach ($files as $file) {
    $extention = $file->getClientOriginalExtension();
    $fileNameToStore = 'deals/' . $deal_item->id . '/images/'.sha1_file($file).".".$extention;
    $path = $file->storeAs('public', $fileNameToStore);
    $images[] = "/storage/".$fileNameToStore;
  }
  $deal_item->images = $images;
}

В модель добавим преобразователь:

protected $casts = [
  'images' => 'array',
];

Вот и все. Получилось? Все понятно? Только запутал? Напиши в комментах.

Комментарии (1)

  1. chechelnitskiy 08 июня 2024, 19:33 # 0
    А под Laravel 11 можете написать Создание галереи изображений? Спасибо!
    *Комментарий будет опубликован после проверки модератором

    Похожие статьи

    Загрузка изображения в Laravel

    Русификация Laravel

    Добавить поле к существующей таблице Laravel

    Как поменять язык в Faker

    Транслитерация URL в Laravel. Примеры str_slug()

    Разработка бота Telegram с помощью Botman на локальном компьютере

    Валидация данных в Laravel form request

    Laravel Excel - Базовый экспорт

    Добавить в botman editMessageText для Telegram

    Как сделать middleware в Laravel 6 - простой пример

    Laravel: Отношения моделей многие ко многим - belongsToMany

    Как русифицировать или поменять шаблон уведомления о сбросе пароля в Laravel

    Создать ссылку на storage из внешнего каталога для Laravel

    Установить Laravel в отдельную папку (site.ru/laravel/)

    Laravel: Отношения моделей один ко многим - hasMany, belongsTo

    Валидация номера кредитной карты на PHP (Laravel)

    Создание form request в Laravel: руководство для начинающих

    Связать папку storage с папкой public в Laravel

    Откуда в Laravel Jetstream (inertia) prop auth.user?

    Экспорт маршрутов из Laravel в JSON файл

    Постраничная навигация на Bootstrap в Laravel 8

    Обработка ошибок в Laravel form request

    Blade - расширить @section с использованием директивы @parent

    Добавить данные об авторизации при каждом запросе к API в Laravel

    Работа с файлами в Laravel Form Request

    Работа с вложенными объектами и коллекциями в Laravel form request

    Стандартные свойства модели в Laravel

    Laravel: Отношение через таблицу-посредника - hasOneThrough()

    Laravel: Отношения моделей один к одному - hasOne, belongsTo

    Laravel: Отношение через таблицу-посредника - hasManyThrough()

    Авторизацией и аутентификация в Laravel form request

    Laravel form request для создания API-запросов

    Настройка команды CRON на хостинге nic.ru для активации Laravel schedule

    Создание уникального индекса в миграции Laravel

    HTTP-запросы в Laravel form request - работа с различными типами запросов

    Создание класса модели в Laravel

    Установка Laravel и создание нового проекта

    Создание таблицы в базе данных (миграции) для модели в Laravel

    Как создать модель в Laravel

    Базовые методы CRUD контроллера для модели в Laravel

    Наш сайт использует куки, нажмите «ОК» если вы не против
    OK