PHP标头附件下载会破坏ZIP文件

时间:2015-03-09 18:04:12

标签: php download zip attachment

我的服务器上有一个类似“983Y4938920820894838947”的文件,我希望用户将其保存为“subject.zip”。

使用标题位置可以使下载工作,并且文件没有损坏。

每当我使用带附件,内容类型和新文件名的标题时,下载zip文件都已损坏(我认为?)。

每当我打开ZIP文件(例如test.zip)时,它都会生成一个名为test.zip.cpgz的新文件。我认为这是mac说文件已损坏的方式。

我正在使用以下代码

//下载ZIP文件

header("Content-Type: application/zip");
header('Content-Disposition: attachment; filename="' . stripslashes($new_filename) . '"');
readfile($filename);

这会使文件损坏,而下面的代码可以正常工作(但不会更改名称):

header("Location: $filename");

我尝试了其他标题但没有成功。有人有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

你在那里缺少一个标题,如果你没有指定内容长度,浏览器将不知道该文件的大小是什么:

header("Content-Length: {{replace.with.your.file.size}}");

也许这会解决你的问题。

答案 1 :(得分:0)

问题在于我有一个回音。回声使拉链腐败。因此有意义的是它只能处理标题位置而不是常规标题来更改文件名。删除回声为我修复了它。