1

我在从服务器下载 Excel 文件时遇到问题。

excel文件已经保存在服务器上,我使用下面的代码下载了它。

if(file_exists($reportPath)){
    //content type
    header('Content-type: application/vnd.ms-excel');
    //open/save dialog box
    header('Content-Disposition: attachment; filename='.$dirFile[count($dirFile)-1]);
    //read from server and write to buffer
    readfile($reportPath);
}

但是下载的文件已损坏。

我很确定保存在服务器上的文件没有损坏,因为我已经手动将它从服务器获取到我的本地桌面。

这意味着,数据已在运行中损坏。

请帮忙,谢谢,我正在使用PHP

这是下载后的文件

4

3 回答 3

1

下载脚本应该是单独的文件。实际上你不应该在这个脚本中打印出任何东西

//Add below to download the text file created
$filename = $file; //name of the file
$filepath = $file; //location of the file. I have put $file since your file is create on the same folder where this script is
header("Cache-control: private");
header("Content-type: application/force-download");
header("Content-transfer-encoding: binary\n");
header("Content-disposition: attachment; filename=\"$filename\"");
header("Content-Length: ".filesize($filepath));
readfile($filepath);
exit;
于 2013-06-11T09:09:32.960 回答
1

你能试试这些标题吗?

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$dirFile[count($dirFile)-1].'"');
header('Cache-Control: max-age=0');

看看它是否有效......干杯!

于 2013-06-11T09:05:46.297 回答
0
    $fileName = "data.xls";
    $object_writer = PHPExcel_IOFactory::createWriter($object, 'Excel5');
    ob_end_clean();
    header("Content-Type: application/download");
    header('Content-Disposition: attachment;filename=' . $fileName);
    $object_writer->save('php://output');

使用 ob_end_clean() 清除输出缓冲区。

于 2021-10-21T11:39:08.177 回答