dsfds2343
2015-03-12 03:49
浏览 67
已采纳

laravel 4 docx文件验证无效

I gave the validation rule like this

'file'=>'mimes:png,gif,jpeg,txt,pdf,doc,docx|max:1024'

But when the docx file is uploaded, it shows this error

The file must be a file of type: png, gif, jpeg, txt, pdf, doc, docx.

Other types are working. I have tested it with doc and images and PDF. What do I have to do to solve this? I have tried creating mimes.php in the app/config folder but didn't work. I'm using laravel 4.

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongwu8064 2015-03-12 04:12
    已采纳

    The issue is that a docx is actually a zipped XML file format. It thinks you're uploading a zip file.

    Office Open XML is a zipped, XML-based file format... Wikipedia

    You can get around this by allowing a zip to be uploaded and validate it ends in .docx otherwise it will delete the file and throw an error.

    打赏 评论
  • dongqian8265 2015-03-12 06:20

    I did have that issue, and I solved it through these mime type:

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

    instead of using just doc/docx use above mimes, and you won't get validation error, when uploading doc/docx files.

    Validation related to mime type:

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

    See, if that helps.

    打赏 评论

相关推荐 更多相似问题