У меня есть файл PHP, который генерирует файлы xls с помощью модуля, найденного по адресу http://pear.php.net/package/Spreadsheet_Excel_Writer/
. Я могу просто создать образец документа, а когда я его открою, он выглядит нормально.Мой следующий шаг - превратить его в скачиваемую ссылку.Для этого я сделал следующее:
$mimeType = "application/vnd.ms-excel";
$file_name = "test.xls";
$file_path = "/tmp/".$file_name;
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Type: application/' . $mimeType);
header('Content-Length: '.$size);
header("Content-Disposition: attachment;filename=$file_name ");
header("Content-Transfer-Encoding: binary ");
// open the file in binary read-only mode
// display the error messages if the file can´t be opened
$file = & fopen($file_path, 'rb');
if ($file) {
// stream the file and exit the script when complete
fpassthru($file);
exit;
} else {
echo $err;
}
Однако, когда я загружаю файл, он содержит много мусорных данных как в Excel, так и в OpenOffice.В diff говорится, что двоичный файл в папке / tmp и загруженный файл отличаются друг от друга.Я предполагаю, что это как-то связано с заголовками или с fpassthru, но мне не очень повезло с отладкой проблемы.
Есть идеи по поводу проблемы?