Firefox下载(尝试打开).zip文件为.HTM

时间:2015-09-08 11:41:53

标签: php html firefox download http-headers

我正在创建可下载的zip文件,几乎无处不在。但是在Mozilla Firefox中保存这个zip我得到一个奇怪的消息,my_zip.zip是HTM文件(对不起语言,但我希望这是可以理解的):
enter image description here
如果我选择保存选项,它将保存为普通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]时,我在标题

之后添加了dump和die命令
        //bunch of kosher headers here...
        readfile($zipFileName);
        dd(headers_list());//dumps and dies

我在下载窗口中获得了一个zip类型。然后我发现在dieexit之后我会一直得到正确的下载类型的zip;然后我删除了所有dump-and-die部分,但下载类型仍​​为zip。我不知道我通过这种操纵修正了什么 我很乐意对这种奇怪的情况作出解释

1 个答案:

答案 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