我正在使用php强制下载我正在制作的web服务的.bz2档案和.deb文件,但下载后文件无效。我在文本编辑器中打开了原始文件和通过php下载的文件,我注意到用php下载的文件在文件开头有1个额外的空间,删除文件确实有效。可能导致这种情况的原因是什么?
这是我正在使用的代码:
header('Content-Type: package/x-generic');
header('Content-Length: ' . filesize($file));
ob_clean();
ob_flush();
readfile($file);
exit;
我已经尝试过尝试使用不同的标题以及清理和刷新功能。
非常感谢任何帮助或想法。
答案 0 :(得分:0)
在某些php文件中?>
后,您可能会有一个额外的空格。通常最好省略关闭?>
标记以避免此问题。
如果是这种情况,您可以在flush()
之后使用headers_sent()
来了解额外空间来自哪个文件/行。
答案 1 :(得分:0)
可能是因为您的PHP文件保存为带有BOM(Byte Order Mark)的UTF-8。尝试将您的php文件保存为UTF-8而不使用BOM。任何合理的高级文本编辑器都允许您在没有BOM的情况下将文件保存为UTF-8。
另请参阅my answer另一个与此相关的问题。它还提到了arnaud576875所说的可能导致问题的原因。
答案 2 :(得分:0)
如果你在php标签之前有空格,那可能会导致开头的空格。如果你需要输出缓冲(ob_clean(),ob_flush()),在设置标题之前,有可能在某处输出空格或数据。如果可能的话,关闭输出缓冲,你应该知道输出开始的哪一行。
答案 3 :(得分:-1)
我终于找到了我的问题的解决方案,经过长时间的搜索,我发现我在我的php文件中包含了另一个php文件,该文件后面有一个空格?>标签。 :S感谢所有回答的人