我给出了像这样的验证规则
'file'=>'mimes:png,gif,jpeg,txt,pdf,doc,docx|max:1024'
但是当上传docx
文件时,它会显示此错误
The file must be a file of type: png, gif, jpeg, txt, pdf, doc, docx.
其他类型正在运作。我用doc和图像以及PDF测试了它。我该怎么做才能解决这个问题?我尝试在app / config文件夹中创建mimes.php
但是没有用。我正在使用laravel 4。
答案 0 :(得分:1)
问题是docx实际上是一种压缩的XML文件格式。它认为你正在上传一个zip文件。
Office Open XML是一种基于XML的压缩文件格式... Wikipedia
您可以通过允许上传zip并验证它以.docx结尾来解决此问题,否则它将删除该文件并抛出错误。
答案 1 :(得分:1)
我确实遇到过这个问题,我通过这些mime类型解决了这个问题:
$mimeType = array('application/zip','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/vnd.ms-office','application/vnd.ms-excel');
而不是仅使用doc / docx使用上面的mimes,并且在上传doc / docx文件时,您不会获得验证错误。
与mime类型相关的验证:
if (!in_array($file->getMimeType(), $this->mimeType)) {
$this->errors->add($key, $this->messages['mimeType']);
}
看,如果有帮助。