使用content-disposition提供的文件:inline有时仍会提示下载

时间:2009-04-21 16:07:57

标签: internet-explorer http inline content-disposition

我的专题说明了我所要求的大部分内容。我有一个网站,可以输出各种格式的报告(HTML,CSV,TSV,Excel等)。只要有可能,我希望这些文件能够在浏览器中显示。为此,我设置了标题,以便“Content-Disposition”为“inline”。这与不同的文件类型非常不一致。似乎在FF3和IE7中,HTML将始终自动打开内联。那讲得通。如果我使用TSV,两个浏览器都会提示下载,因为它是我系统上的未知文件类型。这也很有道理,正是我想要的。但是,Excel和CSV提供不同的行为。在FF中,两者都始终提示下载或打开。如果我选择“打开”,它将在新窗口中打开。在IE中,提示下载或打开 - 我无法想出这个。我认为Excel文件使用Content-Disposition自动内联打开:内联。如果我在IE中选择“打开”,它将在浏览器中以内联方式打开。

有人可以解释意外行为吗?对我来说这不是一个真正的问题,但我的用户认为这是一个错误,所以我可以引用他们的权威来源将是非常好的。到目前为止,关于这个“问题”我发现的唯一一件事就是在mozilla论坛上发布一条关于自动开放式内容是IE的安全漏洞之一的帖子......那是一个很老的帖子,所以也许吧在IE7中被“修复”了吗?感谢。

2 个答案:

答案 0 :(得分:3)

你可能已经解决了这个问题,但如果没有,我可能会有一个答案(对于同样问题的未来人来说,这也让我疯了!)

可以使用以下方法在客户端上覆盖此行为:

  1. 转到Windows资源管理器
  2. 选择工具 - >文件夹选项
  3. 选择“文件类型”选项卡
  4. 查找扩展名“DOC”(或“PDF”等)
  5. 选择“高级”
  6. 勾选/取消“根据需要在下载后确认打开”。
  7. 用于实现预览/下载功能的机制是通过使用“content-disposition”标头,通常使用MimeType“application /”。这基本上告诉本地客户端使用指定的应用程序打开应用程序,但是应用程序的上述设置可以覆盖请求的传送格式。

答案 1 :(得分:0)

检查您的服务器是否为CSV和Excel文件提供了正确的MIME类型。为了正确对待它们,即使是识别其类型并且具有文件类型处理程序/插件的浏览器也需要正确的MIME类型。

您可能希望两者的MIME类型都是application / vnd.ms-excel

如果您使用Web服务器作为常规文件提供这些服务,那么Apache中的相关设置是mime.types文件。

application/vnd.ms-excel xls csv

如果您从应用程序提供这些文件,那么您需要自己添加Content-Type:application / vnd.ms-excel标题。

请注意,对于某些用户,您可能永远无法按预期工作 - 例如,未安装Microsoft Office的任何人,甚至是使用其他浏览器的任何人或者已经搞乱其文件类型关联的人。

(为了您的兴趣,this article描述了这个程序 - 它恰好是Plone / Zope,但想法是一样的。)