2009-04-21 72 views
5

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

有人可以解释意想不到的行为吗?这对我来说并不是一个问题,但我的用户认为这是一个错误,所以我可以引用他们的权威来源会非常出色。我迄今发现的关于这个“问题”的唯一一件事是在mozilla论坛上发布一条关于自动开放内联是IE安全漏洞之一的帖子......这是一个旧帖子,所以也许它在IE7中“固定”?谢谢。

回答

0

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

你可能会想MIME类型两者是应用/ vnd.ms - Excel中

如果你与你的Web服务器作为普通的文件服务这些,然后在Apache中的相关设置是的mime.types文件。

application/vnd.ms-excel xls csv 

如果您服务您的应用程序这些文件,那么你需要添加的内容类型:应用程序/ vnd.ms - Excel中头自己。

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

(为了您的兴趣,this article描述了程序 - 它恰巧能够使用Plone/Zope,但想法是相同的)。

+0

感谢您的回复,但我认为这对我无用......内容类型设置正确。根据RFC4180,我使用text/csv作为CSV的内容类型。我在使用MS Office和Open Office的盒子上得到了相同的行为,除非后者在浏览器中不会内联打开。我使用IIS,顺便说一句。 – rmeador 2009-04-21 16:26:57

3

您可能已经解决了这个,但如果没有我可以有一个答案(与同一问题未来的人,这也带动了我坚果!)

这种行为可以在客户端上被覆盖,使用以下:

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

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

+0

好的:你在部署之前解决问题;) – alepuzio 2010-08-16 15:19:01