Laravel 多个文件(图像)验证

问题描述 投票:0回答:1

我希望帖子能够有多个图像,所以我有这些验证规则:

class StorePostRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'title' => ['required', 'min:3', 'max:50'],
            'caption' => ['required', 'string'],
            'images.*' => ['nullable', 'image', 'mimes:jpeg,png,jpg', 'max:1024']
        ];
    }
}

但由于某种原因,当用户发送图像文件以外的文件时,不会引发验证错误: enter image description here

这是我的 PostController 存储方法:

public function store(StorePostRequest $request)
    {
        $post = new Post($request->safe()->except('images'));

        $post->user()->associate(auth()->user());

        $post->save();

        if ($request->hasFile('images')) {
            $post->addAllMediaFromRequest()->each(fn($image) => $image->toMediaCollection('posts_imgs'));
        }

        return response()->json([
            'message' => 'Post has been created successfully.',
            'post' => new PostResource($post)
        ]);
    }

有没有办法确保在

images
键下发送的所有数据都是图像或空?

laravel validation
1个回答
0
投票

我会将您的规则更改为:

'images' => ['nullable', 'array'],
'images.*' => ['file', 'image', 'mimes:jpeg,png,jpg', 'max:1024'],

这将允许没有图像的空数组或空数组,但会阻止数组中出现任何空值或非图像

© www.soinside.com 2019 - 2024. All rights reserved.