Обслуживание файлов .docx через Php

У меня возникают проблемы при попытке выполнить файл .docx с помощью Php. При загрузке файла я определяю тип файла mime и загружаю файл, используя файл с правильным расширением, основанным на типе mime; например, ниже:

application/msword - doc application/vnd.openxmlformats-officedocument.wordprocessingml.document - docx 

Когда вы пытаетесь обслуживать файлы для загрузки, я делаю обратное в обнаружении расширения и обслуживания на основе типа mime, например

 public static function fileMimeType($extention) { if(!is_null($extention)) { switch($extention) { case 'txt': return 'text/plain'; break; case 'odt': return 'application/vnd.oasis.opendocument.text'; break; case 'doc': return 'application/msword'; break; case 'docx': return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; break; case 'jpg': return 'image/jpeg'; break; case 'png': return 'image/png'; break; case 'pdf': return 'application/pdf'; break; default: break; } } } 

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

Благодарю за любые идеи.

Редактировать # 1

 try { $file = new Booking_Document((int)$get_data['bookingDocument']); header('Content-Type: ' . Booking_Document::fileMimeType($file->getDocumentType())); header('Content-Disposition: attachment; filename=' . $file); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); echo readfile(Zend_Registry::get(static::$_uploadDir).$this->_id); } catch (Exception $e) { View_Helpers_FlashMessages::addMessage(array('message' => $e->getMessage(), 'type' => 'error')); } exit; 

ИСПРАВЛЕНО

До вызова readfile () я добавил ob_clean () и flush (), которые, похоже, устранили проблему.

Исправлена; перед вызовом readfile () я добавил ob_clean () и flush (), которые, похоже, исправили проблему.

У меня была аналогичная проблема несколько дней назад. Это было связано с тем, что некоторые символы выводятся непосредственно перед чтением файла. Эти символы были вставлены в начале загруженного файла, и они казались поврежденными, когда я попытался открыть его (в этом случае PDF).