Заголовок PHP xlsx

так что это работает:

myphpfile.php:

<?php
header('Content-disposition: attachment; filename=myfile.pdf');
header('Content-type: application/pdf');
readfile('myfile.pdf');
?> 

этот php-файл вызывается здесь, и загрузка PDF работает нормально :

<a class = "oglasavanje" href = "../../cjenik/myphpfile.php">download</a><br/>

, но это не работает:

<?php
header('Content-disposition: attachment; filename=myfile.xlsx');
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
readfile('myfile.xlsx');
?>

оба. Файлы pdf и.xlsx находятся в одной папке. Когда я нажимаю на ссылку «скачать», появляется окно загрузки, я сохраняю файл, но файл не открывается.Это дает мне следующую ошибку:

Excel не может открыть файл «myfile.xlsx», потому что формат файла или расширение файла недействительно. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла.

Файл открывается нормально, когда я открываю его вручную (т.е. не скачивая его по ссылке)

Я использую WAMP, если это важно.

Любая помощь приветствуется.

---РЕДАКТИРОВАТЬ---

Я нашел этот фрагмент кода на php.net :

ob_clean();
flush();

, поэтому окончательный код выглядит так, и он работает:

$file = "myfile.xlsx";
header('Content-disposition: attachment; filename='.$file);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: '. filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush(); 
readfile($file);

Спасибо всем за ответы.

7
задан GTCrais 17 April 2012 в 20:57
поделиться