我的服务器上有一个类似"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}}");
也许这会解决你的问题。
问题是我有回声。回声使拉链损坏。因此,它只处理标题位置而不是用于更改文件名的常规标头是有道理的。删除回声为我修复了它。