我知道如何进行下载,当下载发生时,它会从导致下载的网页中附加html。如何过滤HTML?
答案 0 :(得分:4)
如果我理解正确,这是一个常见的问题。我在index.php(start / root / entry文件)的开头使用ob_start解决了这个问题,然后输出了任何输出,下载后我执行了以下操作:
ob_end_clean();
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". filesize("thefileinquestion").";");
header("Content-disposition: attachment; filename=thefileinquestion");
$fp = fopen(thefileinquestion, "r");
while(!feof($fp)){
$buffer = fread($fp, 1024);
echo $buffer;
flush();
}
fclose($fp);
die();
<强>更新强>
ob_start
命令缓冲任何输出(例如,通过echo,printf),并防止在实际下载之前发送给用户的任何内容。 ob_end_clean
比停止此行为并允许再次直接输出。 HTH。
答案 1 :(得分:1)
据我所知,您正在尝试从PHP页面输出一些流以供下载?
如果是这样,那么不要从包含HTML的页面输出该内容,而是重定向到仅输出下载流的单独的php页面,如果需要,还可以使用标题。
答案 2 :(得分:1)
确保在文件流完成后您没有输出其他数据。在文件流完成后,使用exit()调用结束页面执行。关闭'?&gt;'后的任何字符标记(例如换行符)也可能导致下载问题。
将下载脚本移动到自己的文件应该可以更容易地发现任何问题,因为它只做一件事。为避免输出任何最终换行符,您可以省略结束'?&gt;'在这种情况下也标记在脚本的末尾。