Laravel验证PDF文件类型的MIME类型

22

我已经尝试了以下 MIME 类型来验证 PDF 文件,但是没有一个能通过验证。

  $rules  = [
     ....
    "file" => "required|mimes:application/pdf, application/x-pdf,application/acrobat, applications/vnd.pdf, text/pdf, text/x-pdf|max:10000"
     ....
       ]

您的表单接受文件吗?比如在打开一个表单时,您使用了'files' => true这样的代码吗? - Dees Oomens
我认为您在验证“application/pdf”时要使用的规则是“mimetypes”,而不是“mimes”。请注意,@Froxz的回答适用于您在验证“pdf”与“mimes”时。https://laravel.com/docs/5.7/validation#available-validation-rules - Jon
嗨@Jon,感谢您的评论,请记住当问题被提出时只有Laravel 5.1可用,并且此规则是在5.2中添加的,我已更新我的答案。 - SergkeiM
嗨@Froxz - 一切都好,不过Laravel 5.2是在2015年12月发布的(比提问早两个月)。https://en.wikipedia.org/wiki/Laravel#Release_history - Jon
1个回答

57

只需添加文件扩展名

$rules  = [
    "file" => "required|mimes:pdf|max:10000"
]

来自Laravel文档:

虽然您只需要指定扩展名,但此规则实际上通过读取文件内容并猜测其MIME类型来验证文件的MIME类型。


更新:

Laravel 5.2开始,您可以使用名为mimetypes新的验证规则,对完整的MIME类型进行文件上传验证。

$rules  = [
    "file" => "required|mimetypes:application/pdf|max:10000"
]

2
在 Laravel 8.x 中,我使用 mimes:pdf,doc,docx 解决了我的 PDF 问题。 - Thiago Valente

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