我正在创建可下载的zip文件,几乎无处不在。但是在Mozilla Firefox中保存这个zip我得到一个奇怪的消息,my_zip.zip是HTM文件(对不起语言,但我希望这是可以理解的):
如果我选择保存选项,它将保存为普通zip(根本没有HTM的标志),但在“打开”部分只有用于打开HTM的程序
那么,问题是 如何让Firefox将此zip文件检测为zip?
我目前正在使用此标题(由PHP设置):
header('Content-Description: File Transfer');
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$zipFileName");
header("Content-Transfer-Encoding: binary");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store");
header('Pragma: no-cache');
header("Content-length: " . filesize($zipFileName));
readfile($zipFileName);
已经尝试使用header("Content-Type: application/zip");
,但不起作用;加application/zip
不是标准(正如我在这里读到的一些标题相关问题)。
我正在使用 Mozilla Firefox v40.0.3 ,php项目正在使用Laravel 5.1 (我怀疑它与此有什么关系)
更新
在尝试不同的application\[format]
时,我在标题
//bunch of kosher headers here...
readfile($zipFileName);
dd(headers_list());//dumps and dies
我在下载窗口中获得了一个zip类型。然后我发现在die
或exit
之后我会一直得到正确的下载类型的zip;然后我删除了所有dump-and-die部分,但下载类型仍为zip。我不知道我通过这种操纵修正了什么
我很乐意对这种奇怪的情况作出解释
答案 0 :(得分:2)
快速google search表明Content-Type似乎是罪魁祸首
header("Content-Type: application/octet-stream");
尝试将其设置为application / x-zip-compressed? 此错误报告中的评论也许有用:https://bugzilla.mozilla.org/show_bug.cgi?id=540900