我可以这样做吗?
ob_start();
header("Content-Type: application/msword");
header("Content-Disposition: attachment; filename=".$title);
header("Content-Length: ".$size);
header("Content-Transfer-Encoding: binary");
readfile($path);
ob_end_flush();
目前我正在下载正确命名的文件,但该文件的内容是包含上述代码的php的html输出。
我已经验证了$ path是正确的。一个糟糕的$ size会导致这种情况发生吗? 我也在ob_start()之后直接尝试了ob_flush()。
编辑:当前代码:
if (file_exists($path)){
ob_start();
header("Content-Type: application/msword");
header("Content-Disposition: attachment; filename=".$title);
header("Content-Length: ".filesize($path));
header("Content-Transfer-Encoding: binary");
readfile($path);
ob_end_flush();
die();
} else die ("Not Found");
以上代码会导致同样的问题。文件下载,命名正确,显然存在并且大小正确,但文件内容是页面的html输出。
提前致谢
我刚注意到这是在下载(错误)的文件的最后: “int(14)content”
但我并不是故意在我的代码中输出任何内容。
答案 0 :(得分:1)
也许一些调试可能会有所帮助:
if (file_exists($path)) {
ob_start();
header("Content-Type: application/msword");
header("Content-Disposition: attachment; filename=".$title);
header("Content-Length: ".filesize($path));
header("Content-Transfer-Encoding: binary");
readfile($path);
ob_end_flush();
die(); // To not send the HTML afterwards
} else die("Not found");