图片无法根据尺寸进行验证

时间:2018-10-09 07:25:09

标签: eloquent laravel-5.6

我有一个属性表,一个属性表。单击“保存”时,我将存储featured_image属性以及与插入的属性相关的照片表中的多个图像:

$messages = [
    'path.*required|max:200' => 'Each image should not exceed 200 Kilobytes',
    ];

$this->validate($request, [
    'path.*' => 'required|max:200',
    'featured_image' => 'required|max:300',
], $messages);

if($request->hasFile('path')){
    foreach ($request->path as $photo) {
        $photoname = $photo->getClientOriginalName();
        $photo->move('images', $photoname);
        $photoModel = new Photo;
        $photoModel->path = $photoname;
        $photoModel->property_id = $prop->id;
        $photoModel->save();
    }
} 

我的问题是在验证中。如果我上传的特色图片($ request-> featured_image)大于400 KB,则会出现错误。但是,当我上传多张图片时,针对这些图片的验证无效。我设法上传了一个6MB的图片!

我需要进行验证吗?

此外,我的自定义消息不会显示。

1 个答案:

答案 0 :(得分:1)

在您的validate方法中,您将针对单个图像进行验证,因此,当您上传多个图像时,这将不再起作用,因为它不再是一个图像,而是一个数组。在这种情况下,您需要在属性名称后使用通配符,例如:'featured_image.*',因为它实际上引用了发送的任意数量的图像,并且此验证规则主要用于multiple文件上传

编辑:要将所有图像的最大尺寸设置为2mb,可以使用:max:5,因为2048 / 400 = 5.12

编辑2:对于自定义消息,请检查我在评论中提供的网址,然后向下滚动一点,您将看到如何display error messages,或者如果它不在该部分的下方,则只需搜索{{1} },您将看到如何指导