如果文件在 laravel 中上传,则文件 mime 类型验证

Posted

技术标签:

【中文标题】如果文件在 laravel 中上传,则文件 mime 类型验证【英文标题】:file mime type validation if file is uploaded in laravel 【发布时间】:2017-11-08 16:24:44 【问题描述】:

我有一个文件上传字段:

<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'; else '' 并将 $val 放入 'image.*' => $val, 【参考方案1】:

根据 Laravel 5.8

使用请求数据进行文件验证,在上传前检查所需的 MIME 类型和文件大小

$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());

注意:不要忘记使用验证器外观

【讨论】:

【参考方案2】:

我可能会检查该文件是否存在于请求中,然后对其进行验证。 例如:

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

【讨论】:

以上是关于如果文件在 laravel 中上传,则文件 mime 类型验证的主要内容,如果未能解决你的问题,请参考以下文章

如果服务器关闭,则激活维护模式

Laravel 5.1 在主机上上传

如何 Laravel 中验证 zip 压缩包里的文件?

如何 Laravel 中验证 zip 压缩包里的文件?

无法使用 laravel 文件管理器上传大文件(视频)

Laravel 文件上传:验证磁盘空间