Правило mimes
Правило mimes применяется к полю файла в валидации Laravel и проверяет,
соответствует ли MIME-тип загружаемого файла разрешённому списку.
Первым и единственным параметром передаётся список допустимых MIME-типов
через запятую. Правило работает только с файлами, поэтому поле должно
быть типа 'file' или 'image' в валидации.
Синтаксис
<?php
'field_name' => 'mimes:mime1,mime2,mime3'
?>
Пример
Давайте проверим, что загружаемый файл является изображением в формате JPEG или PNG:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function upload(Request $request)
{
$validated = $request->validate([
'photo' => 'required|file|mimes:jpeg,png'
]);
return response()->json(['message' => 'File uploaded successfully']);
}
}
?>
Результат выполнения кода при загрузке PDF-файла:
["The photo must be a file of type: jpeg, png."]
Пример
Давайте разрешим загрузку документов в форматах PDF, DOC и DOCX:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function upload(Request $request)
{
$validated = $request->validate([
'document' => 'required|file|mimes:pdf,doc,docx'
]);
return response()->json(['message' => 'Document uploaded successfully']);
}
}
?>
Результат выполнения кода при успешной загрузке:
["Document uploaded successfully"]
Пример
Давайте создадим класс запроса с кастомным сообщением об ошибке
для правила mimes:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class FileUploadRequest extends FormRequest
{
public function rules()
{
return [
'avatar' => 'required|image|mimes:jpeg,png,gif|max:2048'
];
}
public function messages()
{
return [
'avatar.mimes' => 'The avatar must be a JPEG, PNG, or GIF image.'
];
}
}
?>
Результат выполнения кода при загрузке WebP-изображения:
["The avatar must be a JPEG, PNG, or GIF image."]
Пример
Давайте используем правило mimes вместе с другими правилами
для комплексной валидации файла:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function upload(Request $request)
{
$validated = $request->validate([
'resume' => [
'required',
'file',
'mimes:pdf,docx',
'max:5120',
'min:10'
]
]);
return response()->json(['message' => 'Resume uploaded successfully']);
}
}
?>
Результат выполнения кода при успешной загрузке:
["Resume uploaded successfully"]
Смотрите также
-
правило
mimetypes,
которое проверяет MIME-тип файла по полному имени -
правило
file,
которое проверяет, что поле является загруженным файлом -
правило
image,
которое проверяет, что файл является изображением -
правило
dimensions,
которое проверяет размеры изображения