【问题标题】:laravel 4 docx file validation not workinglaravel 4 docx文件验证不起作用
【发布时间】:2015-03-12 03:49:42
【问题描述】:

我给出了这样的验证规则

'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.

其他类型正在工作。我已经用文档和图像以及 PDF 对其进行了测试。我该怎么做才能解决这个问题?我尝试在 app/config 文件夹中创建mimes.php,但没有成功。我正在使用 laravel 4。

【问题讨论】:

    标签: php file validation laravel-4


    【解决方案1】:

    我确实遇到过这个问题,我通过这些 mime 类型解决了它:

    $mimeType = array('application/zip','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/vnd.ms-office','application/vnd.ms-excel');
    

    在上传 doc/docx 文件时,而不是仅使用 doc/docx 使用上述 mime,并且您不会收到验证错误。

    与 mime 类型相关的验证:

    if (!in_array($file->getMimeType(), $this->mimeType)) {
        $this->errors->add($key, $this->messages['mimeType']);
    }
    

    看看,如果这有帮助。

    【讨论】:

    • 你的意思是我应该像这样'file'=>'mimes:png,gif,jpeg,txt,pdf,application/zip','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/vnd.ms-office','application/vnd.ms-excel|max:1024' ??
    • 是的,如果可行的话,我所做的有点不同,我上传了一个文件,然后我使用上传文件的 mime 类型并与这些定义的 mime 匹配,如果他们没有' t 匹配然后我曾经显示错误。我已经编辑了我的答案,以展示我过去是如何验证的。
    【解决方案2】:

    问题在于 docx 实际上是一种压缩的 XML 文件格式。它认为您正在上传一个 zip 文件。

    Office Open XML 是一种基于 XML 的压缩文件格式...Wikipedia

    您可以通过允许上传 zip 并验证它以 .docx 结尾来解决此问题,否则它将删除文件并引发错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-21
      • 2015-01-09
      • 2013-04-17
      • 2018-01-20
      • 2018-07-12
      • 2018-02-15
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多