2010-02-02 117 views
1

我试图通过浏览器返回一个zip文件,作为流。这适用于其他类型的文件(例如Excel文件),但是当我开始处理zip文件时,我无法让我的浏览器识别它是zip文件。Zip Mime Type看起来无法识别

在我的测试机器上运行的Firefox和IE都提示,询问用什么程序打开文件。 Explorer被设置为zip文件关联的默认值。

IE不报告很背,但是Firefox的告诉我,文件类型是什么

应用程序/压缩

其中,据我可以告诉是正确的MIME类型为一个zip文件。我没有设置的唯一东西就是扩展名,所以这个文件被称为“测试”而不是“Test.zip”,但据我所知,应该全部通过mime类型来解决。

任何人有什么想法可能会出错?

回答

4

你应该把与文件,确保文件的扩展名包括:

Content-disposition: attachment; filename=Test.zip

作为标题。

在C#:

Response.ContentType = "application/zip"; 
Response.AddHeader("Content-Length", contentLength.ToString()); 
Response.AddHeader("Content-disposition", "attachment; filename=" + fileName); 

if (Request.UserAgent.Contains("MSIE")) 
{ 
    Response.AddHeader("Content-Transfer-Encoding", "binary"); 
} 
+0

约翰,谢谢你的回应。内容类型和内容配置已经建立但不起作用。我猜测这个长度对发现的类型没有什么影响,因为它影响到Firefox,所以也不确定传输编码是否应该归咎于它。 – Ian 2010-02-03 12:12:03

+0

@Ian:你能发表一些代码吗? – 2010-02-03 13:17:44

+0

不幸的是发布代码并不是真正的选择,因为代码是通过相当深层次的类传播的。你的回答几乎是正确的。我错过了文件扩展名,但是“Content-disposition”应该有一个小写的'd',因为它在IE中区分大小写。这些改变后,一切工作。 – Ian 2010-02-05 08:41:44

0

如果你可以修改MIME类型,尝试应用程序/ x-ZIP。

+1

我可以更改MIME类型,但应用程序/ x-zip不是ZIP标准。 – Ian 2010-02-03 12:10:44