所以这有效:
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);
谢谢大家的回答。