Zammuuz
Zammuuz

Reputation: 708

laravel 4 docx file validation not working

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.

Upvotes: 3

Views: 1846

Answers (2)

Gaurav Dave
Gaurav Dave

Reputation: 7474

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.

Upvotes: 2

Matt Shirley
Matt Shirley

Reputation: 4215

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.

Upvotes: 1

Related Questions