5

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

有人可以解释意外的行为吗?这对我来说并不是一个真正的问题,但我的用户认为这是一个错误,所以我可以引用他们的权威来源会非常好。到目前为止,我发现的关于这个“问题”的唯一一件事是 Mozilla 论坛上的一篇关于自动打开内联如何是 IE 的安全漏洞之一的帖子……那是一篇旧帖子,所以也许它在 IE7 中被“修复”了吗?谢谢。

4

2 回答 2

3

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

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

  1. 转到 Windows 资源管理器
  2. 选择工具 -> 文件夹选项
  3. 选择“文件类型”选项卡
  4. 查找扩展名“DOC”(或“PDF”等)
  5. 选择“高级”</li>
  6. 根据需要勾选/取消勾选“下载后确认打开”。

用于实现预览/下载功能的机制是通过使用“content-disposition”标头,通常使用 MimeType“application/”。这基本上告诉本地客户端使用指定的应用程序打开应用程序,但是应用程序的上述设置可以覆盖请求的传递格式。

于 2009-12-07T11:58:33.093 回答
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 的任何人,甚至是使用替代浏览器或弄乱其文件类型关联的任何人。

(为了您的兴趣,本文描述了该过程 - 它恰好可以 Plone/Zope,但想法是相同的)。

于 2009-04-21T16:13:45.093 回答