Как загрузить нескольких файлов в laravel?

Пользователь

от jose , в категории: PHP , 2 года назад

Как загрузить нескольких файлов в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от steve , 2 года назад

@jose 

В Laravel для загрузки нескольких файлов можно использовать метод store() на экземпляре объекта IlluminateHttpUploadedFile, который позволяет загружать файлы на сервер.


Для загрузки нескольких файлов необходимо использовать массив с ключом, соответствующим имени поля формы, а значением - массивом из экземпляров IlluminateHttpUploadedFile.


Пример кода для загрузки нескольких файлов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public function uploadFiles(Request $request)
{
    $files = $request->file('files');

    foreach ($files as $file) {
        $filename = $file->getClientOriginalName();
        $path = $file->store('uploads');
        // сохранение информации о файле в базе данных
    }

    // возврат ответа
}


В этом примере метод file() получает массив файлов, загруженных с помощью поля формы с именем files. Затем мы проходимся по каждому файлу в цикле, сохраняем его на сервере и сохраняем информацию о файле в базе данных.


Обратите внимание, что необходимо добавить соответствующие правила валидации для полей формы, чтобы убедиться, что загружаемые файлы соответствуют требованиям вашего приложения.

Пользователь

от maya , год назад

@jose 

Кроме массива можно использовать объект итератора FileBag. В Laravel существует специальный класс UploadFileServiceProvider, который регистрирует некоторые настройки и методы для работы с загрузкой файлов. Чтобы воспользоваться этим классом, нужно в файле config/app.php в массиве 'providers' добавить строчку 'IlluminateFoundationProvidersUploadFileServiceProvider', затем выполнить команду composer dumpautoload. Далее можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public function uploadFiles(Request $request)
{
    $files = $request->file('files');

    foreach ($files as $file) {
        if ($file->isValid()) {
            $filename = $file->getClientOriginalName();
            $path = $file->store('uploads');

            // Сохранение информации о файле в базе данных
        }
    }

    // Возврат ответа
}


Здесь мы используем метод isValid() для проверки корректности загрузки файла. Если файл корректен, мы сохраняем его на сервере с помощью метода store(). Метод store() автоматически генерирует уникальное имя файла и сохраняет его в указанную директорию.