以下是我过去三年一直使用的代码,它运行正常.刚才我在IE6,IE7,IE8等所有浏览器中都进行了测试,并且在所有这些浏览器中都运行良好.$ fn是文件的完整路径.并确保在将文件刷新到浏览器之前我没有使用过ob_clean的其他空格或换行符.
如果您没有在此之上发送其他HTML代码,那就更好了......所以请单独使用它而不使用其他内容.否则用ob_start()开始代码; 所以在ob_clean()的行上不会有任何额外的字符.
$filename = "$fn";
ob_clean();
header("Cache-Control: no-store");
header("Expires: 0");
header("Content-Type: application/octet-stream");
header("Content-disposition: attachment; filename=\"".basename($filename)."\"");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
readfile($filename);
Run Code Online (Sandbox Code Playgroud)
我有一个文件管理模块,我上传文件,用户可以下载.如果您仍然遇到问题或无法使其正常工作,那么只需添加几行问题就可以了解所见过的人会对此做出回应.
我使用了更多标题的原因是要确保它的工作原理,因为我首先遇到IE 6的问题.
对于安全服务器HTTPS用这一个替换前两个标头.
header("Cache-Control: maxage=1");
header("Pragma: public");
Run Code Online (Sandbox Code Playgroud)
这样它对我有用.