РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
585 of 1392 menu

Правило file

Правило file применяется к полю формы, которое должно содержать загруженный файл. Оно проверяет, что переданные данные являются экземпляром класса UploadedFile и файл был успешно загружен на сервер. Это правило часто используется в сочетании с другими правилами валидации файлов, такими как mimes, max, min и image.

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

Синтаксис

<?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->all(), [ 'field_name' => 'file', ]); ?>

Пример

Давайте создадим форму загрузки аватара пользователя. В контроллере мы проверим, что поле 'avatar' содержит файл:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function updateAvatar(Request $request) { $validator = Validator::make($request->all(), [ 'avatar' => 'file', ]); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } $path = $request->file('avatar')->store('avatars', 'public'); return response()->json([ 'message' => 'Avatar uploaded successfully', 'path' => $path, ]); } } ?>

Результат выполнения кода при успешной загрузке файла:

{"message":"Avatar uploaded successfully","path":"avatars/QW3rT5yU8iOp.jpg"}

Результат выполнения кода, если поле не содержит файл:

{"errors":{"avatar":["The avatar must be a file."]}}

Пример с использованием Form Request

Давайте создадим отдельный класс запроса для валидации аватара:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class AvatarRequest extends FormRequest { public function authorize(): bool { return true; } public function rules(): array { return [ 'avatar' => ['file', 'mimes:jpg,jpeg,png', 'max:2048'], ]; } } ?>
<?php namespace App\Http\Controllers; use App\Http\Requests\AvatarRequest; class UserController extends Controller { public function updateAvatar(AvatarRequest $request) { $path = $request->file('avatar')->store('avatars', 'public'); return response()->json([ 'message' => 'Avatar updated successfully', 'path' => $path, ]); } } ?>

Пример с использованием класса Rule

Правило file также доступно через фасад Rule. Это может быть удобно для более сложных сценариев или при использовании в массиве правил:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; class FileController extends Controller { public function upload(Request $request) { $validator = Validator::make($request->all(), [ 'document' => [ Rule::file(), 'mimes:pdf,doc,docx', 'max:10240', ], ]); if ($validator->fails()) { return back()->withErrors($validator)->withInput(); } $path = $request->file('document')->store('documents', 'private'); return redirect()->route('documents.index') ->with('success', 'Document uploaded successfully'); } } ?>

Смотрите также

  • правило image,
    которое проверяет, что файл является изображением
  • правило mimes,
    которое проверяет MIME-тип загружаемого файла
  • правило max,
    которое ограничивает максимальный размер файла
  • правило min,
    которое устанавливает минимальный размер файла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить