Laravel 5.5文件扩展名验证不起作用

最后发布: 2018-02-02 10:52:34


问题

要求 :用户只能上传pdf,word文档,excel或powerpoint。 我已经尝试过这些验证规则,但没有一个起作用:

'fileUpload' => 'sometimes|mimes:doc,docx,xls,xlsx,ppt,pdf,zip|max:2048',

我还尝试了以下规则来测试pdf。

'fileUpload' => 'sometimes|mimetypes:application/pdf|max:2048',
'fileUpload' =>  'sometimes|mimetypes:pdf|max:2048',
'fileUpload' =>  'sometimes|mimes:application/pdf|max:2048',
'fileUpload' =>  'sometimes|mimes:pdf|max:2048',

当我尝试上传任何文件时,第一条规则说:

The file upload must be a file of type: doc, docx, xls, xlsx, ppt, pdf, zip.

第二条规则说:

The file upload must be a file of type: application/pdf.

我也曾尝试更改规则安排,但仍然是同一问题。

我正在手动处理此要求。 但是想知道为什么这些验证规则不起作用。

validation laravel-5
回答

根据5.5 文档

MIME规则的基本用法

'photo' => 'mimes:jpeg,bmp,png'

即使只需要指定扩展名,该规则实际上也会通​​过读取文件的内容并猜测其MIME类型来针对文件的MIME类型进行验证。

MIME类型及其对应的扩展名的完整列表可以在以下位置找到: https : //svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

只需尝试一次完整扩展

'fileUpload' => 'sometimes|mimes:application/pdf|max:2048',


回答

我找到了原因。 我试图上传多个文件,并且验证规则应该像这样验证数组

'fileUpload.*'. instead of just 'fileUpload'

我只是想念*。 因为我的输入字段正在上传多个文件

<input  type="file" name="fileUpload[]" multiple />