Laravelで複数の画像ファイルのアップロードのバリデーション

次のようinputタグにmultiple属性をつけて複数のファイルをアップロードするときのリクエストの検証方法について。

<input type="file" class="form-control" name="images[]" multiple>

アップロードされたファイルがPNGファイルであることを検証する例です。

1つ以上のファイルがアップロードされていることを検証します。
バリデーションルールには「required」「array」を指定します。

$request->validate([
    'images' => 'required|array',
], [
    'images.required' => '画像ファイルを選択してください。',
]);

次に、配列の各要素が画像であることを検証します。
配列中の属性のバリデーションには「ドット記法」を使用します。
バリデーションルールには「required」「file」「mimes」を指定します。

$request->validate([
    'images.*' => 'required|file|mimes:png'
], [
    'images.*.required' => '画像ファイルを選択してください。',
    'images.*.file' => '画像ファイルを選択してください。',
    'images.*.mimes' => 'PNGファイルを選択してください。',
]);

全体のコードは次のようになります。

public function upload(Request $request)
{
    $request->validate([
        'images' => 'required|array',
        'images.*' => 'required|file|mimes:png'
    ], [
        'images.required' => '画像ファイルを選択してください。',
        'images.*.required' => '画像ファイルを選択してください。',
        'images.*.file' => '画像ファイルを選択してください。',
        'images.*.mimes' => 'PNGファイルを選択してください。',
    ]);

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください