2015-03-12 4 views
3

Я дал правила проверки, как этотLaravel проверки файла 4 DOCX не работает

'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. Что мне нужно сделать, чтобы решить эту проблему? Я попытался создать mimes.php в папке app/config, но не работал. Я использую laravel 4.

ответ

1

Проблема в том, что docx на самом деле является zip-файлом формата XML. Он думает, что вы загружаете zip-файл.

Office Open XML является Молнии, XML-формат файла ... Wikipedia

Вы можете обойти эту проблему, позволяя почтовый индекс, который будет загружен и проверить заканчивается в .docx в противном случае он будет удалите файл и выбросите ошибку.

1

Я имел эту проблему, и я решил его с помощью этих типов мима:

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

вместо того, чтобы использовать только DOC/DOCX использовать выше мим, и вы не получите сообщение об ошибке проверки, при загрузке дока/docx.

проверки, связанные с типом пантомимы:

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

Престол, если это помогает.

+0

Вы имеете в виду, что я должен давать его как этот '' файл '=>' mimes: png, gif, jpeg, txt, pdf, application/zip ',' application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ',' application/vnd.ms-office ',' application/vnd.ms-excel | max: 1024'' ?? – Zammuuz

+0

Да, если это работает, то, что я делал, было немного по-другому. Я загружаю файл, а затем использую, чтобы взять тип mime загруженного файла и иметь совпадение с этими определенными мимами. Если они не совпадают, то я показывал ошибка. Я отредактировал свой ответ, чтобы показать, как я использовал проверку. –