在Laravel中上传文件时,文件mime类型验证

5

我有一个文件上传字段:

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

此字段为可选项,用户可以选择添加文件或不添加。

我希望进行文件类型验证,并且不允许用户添加除图像以外的其他文件。这是我目前所做的。

$this->validate($request,[
        'image.*' => 'mimes:jpg,jpeg,png,bmp,tiff |max:4096',
    ],$messages = [
        'mimes' => 'Please insert image only',
    ]);

但是,当没有上传文件时,验证不会通过。任何帮助都将不胜感激。

制作一个解决方法,如果文件不为空,则 $val = 'mimes:jpg,jpeg,png,bmp,tiff |max:4096';否则为 '',并将 $val 放入 'image.*' => $val。 - Bas
2个回答

12

根据 Laravel 5.8 版本

使用请求数据进行文件验证,可在上传文件之前进行 requiredmime typefile size 检查:

$validator = Validator::make($request->all(),[
        'image' => 'required|mimes:jpg,jpeg,png,bmp,tiff |max:4096',
    ],$messages = [
        'mimes' => 'Please insert image only',
        'max'   => 'Image should be less than 4 MB'
    ]);

dd($validator->errors());

注意:不要忘记使用验证器门面(Validator Facade)


0

我会先检查请求中是否存在该文件,然后对其进行验证。

例如:

if ($request->has('image') {
    // Do your validation check
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接