PHP 标头附件下载损坏了 ZIP 文件


PHP header attachment download corrupts ZIP file

我的服务器上有一个类似"983Y4938920894838947"的文件,我希望用户将其保存为"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");

我尝试了其他标题,但没有成功。有人知道吗?谢谢!

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

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

也许这会解决你的问题。

问题是我有回声。回声使拉链损坏。因此,它只处理标题位置而不是用于更改文件名的常规标头是有道理的。删除回声为我修复了它。