我目前正在努力了解我的应用程序出了什么问题。
由于我无法找到解决方案(更多信息请参见:Codeigniter 下载帮助程序损坏 .7z 和 .rar 文件帮助或替代解决方案?)我决定采用不同的方法。
所以问题是是什么导致通过 HTML 请求下载的文件(如果我说得对的话)损坏,即使它们在通过 FTP 下载时没有损坏。跟进的是,是什么导致特定类型的扩展程序损坏。因为我可以很好地下载 zip 文件,但 7z 和 rar 文件会损坏。
这是 codeiniter 的下载助手使用的标题列表:
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
助手使用 file_get_contents() 来确定内容长度并发送。我尝试使用 filesize() 并通过 readfile() 发送文件,但结果是一样的。
我还尝试了不同的 mime,从包罗万象的 application/octet-stream 到特定的 mime,具体取决于类型(application/x-7z-compressed 等),但效果不大。
所以在这一点上,我不知道是什么导致一些扩展工作,而另一些则没有。
欢迎任何建议。
是否有一些 php,或 apache 或任何调整,我可以用来改变它的属性?
编辑:
我注意到,由于某种原因,当我打开一个文件时,会添加一个代表下载 ID 的数字,我不知道它是如何到达这里或如何停止它,但这让我走上了正确的轨道。非常感谢,我会随着我的进步更新这个。
另外如何防止php在我的文件顶部附加一些东西?
编辑:
找到了!
这是一个模糊的回声,我根本没有看到,我只是太累了。但是现在它消失了,一切正常。我花了大约几个小时来找出问题所在,我对自己很生气,但现在我很高兴一切都结束了。非常感谢帮助我找到问题:)