Работа с загруженными файлами
Imhotep предоставляет удобные методы для работы с файлами, загруженными через формы.
Получение файлов
Получить файл по имени
$file = $request->file('photo');
// Или через динамическое свойство
$file = $request->photo;
PHP
Получить все файлы
$files = $request->files();
PHP
Проверка загрузки
Проверить наличие файла
if ($request->hasFile('photo')) {
// Файл 'photo' был загружен
}
// Проверить несколько файлов
if ($request->hasFile(['photo', 'document'])) {
// Оба файла были загружены
}
PHP
Валидация файлов
if ($request->file('photo')->isValid()) {
// Файл загружен без ошибок
}
PHP
Сохранение файлов
Сохранить файл с автоматическим именем
// Сохранить в локальное хранилище
$path = $request->photo->store('images');
// Сохранить в облачное хранилище S3
$path = $request->photo->store('images', 's3');
PHP
Сохранить файл с указанным именем
// Локальное хранилище
$path = $request->photo->storeAs('images', 'profile.jpg');
// Облачное хранилище S3
$path = $request->photo->storeAs('images', 'profile.jpg', 's3');
PHP
Информация о файле
Класс Imhotep\Http\UploadedFile предоставляет много полезных методов:
$file = $request->file('photo');
// Имя оригинального файла
$originalName = $file->originalName();
// Расширение файла
$extension = $file->originalExtension();
// MIME-тип
$mimeType = $file->mimeType();
$originalMimeType = $file->originalMimeType(); // MIME-тип из запроса
// Размер файла в байтах
$size = $file->size();
// Путь к файлу
$path = $file->path();
// Проверить тип файла
if (str_starts_with($file->mimeType(), 'image/')) {
// Это изображение
}
PHP
Пример полной обработки файла
public function uploadPhoto(Request $request)
{
// Проверяем наличие файла
if (!$request->hasFile('photo')) {
return back()->withErrors('Файл не загружен');
}
// Получаем файл
$file = $request->file('photo');
// Проверяем валидность
if (!$file->isValid()) {
return back()->withErrors('Ошибка загрузки файла');
}
// Проверяем MIME-тип
if (! str_starts_with($file->mimeType(), 'image/')) {
return back()->withErrors('Файл должен быть изображением');
}
// Сохраняем файл
$path = $file->store('profile-photos');
// Возвращаем результат
return back()->with('success', 'Фото загружено: ' . $path);
}
PHP
Конфигурация хранилища
Файлы сохраняются на диск, настроенный в config/filesystems.php как default.
Для работы с облачными хранилищами (S3, FTP и др.) настройте соответствующий диск в конфигурации.