PHP下载脚本返回download-file.php而不是filename

时间:2014-08-10 06:38:50

标签: php header download

我写了一个下载脚本,从服务器上找到一个受限制的文件,在阅读之后,准备文件供用户下载,并附上以下标题。

header('Content-Type: application/octet-stream');
header("Content-Length: $filesize");
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Accept-Ranges: bytes');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');

但有时使用默认的浏览器下载管理器,它会返回 download-file.php 而不是文件名!

例如它应该返回abc.zip但它返回download-file.php并且下载过程完美地运行

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

由于我不知道您如何使用$file$filesize而是尝试此操作:

$file = "abc.zip"; // adjust accordingly
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-Disposition: attachment; filename=".basename($file));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
header("Content-Description: File Transfer");
@readfile($file);
exit();

加上,缺少readfile()

这一行:

header("Content-Length: $filesize");

应为:

header("Content-Length: ".filesize($file)); // or $filesize in your case.

缺少filesize()