Я пытаюсь использовать «PHPWord» для загрузки файла DOCX.
Если я пытаюсь сохранить файл на сервере, он работает нормально. Но если добавить заголовки, чтобы загрузить его, то файл будет отображаться в поврежденной форме.
Примечание: я открываю его с помощью openOffice.
Вот мой код:
$document->save($doc);
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header("Content-Disposition: attachment; filename=CV.docx");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($doc));
readfile($doc);
Может кто-нибудь сказать, пожалуйста, в чем может быть проблема?
Позвольте мне сделать предположение:
Ваша программа выводит некоторый текст до ты отправил header
с (если вы не вручную echo
это может быть предупреждение php, которое тоже считается выходным). Таким образом, в фактическом выводе вашего файла, если вы откроете его с помощью простого текстового редактора, как txt
(просто переименуйте расширение в .txt
и откройте его с помощью блокнота) первые строки будут примерно такими:
Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23
…а потом остальные ваши doc
файл. Конечно, это испорчено.
Если это так, вы не должны выводить что-нибудь перед header
s
Других решений пока нет …