2012-02-06 67 views
0

我有一个JSF2应用程序链接到服务器文件系统上的静态Excel文件。这个链接是一个简单的HTML这样的:Internet Explorer尝试在Jboss服务器上打开Excel并失败

<a href="#{bean.getExcelLink(auction)}">Excel File</a> 

这与Chrome和Firefox效果很好,并且也即当应用程序在Tomcat上运行我的本地Windows 7计算机上。但是,当在临时环境(即使用Jboss AS 7.0.1 Final的Linux)上时,IE试图在其自己的窗口中打开Excel文件并产生一堆垃圾字符。

同样,问题只出现在IE上,当应用程序在Linux上运行Jboss AS时。

关于发生了什么以及如何解决它的任何想法?

回答

1

显然,响应内容类型是错误的。鉴于它在Linux中失败但在Windows中成功的事实,这只能意味着使用平台特定的MIME类型映射来确定内容类型,而不是使用特定于webapp/server的MIME类型映射(当然,Linux机器没有安装MS Office,所以它不知道MIME类型的.xls.xlsx文件)。这反过来只意味着你不直接链接到它,而是使用通用的servlet来流式传输文件。

如果这是真的,那么您实际上应该使用ServletContext#getMimeType()来确定基于文件扩展名的内容类型,而不是使用特定于平台的MIME类型映射的URLConnection#guessContentTypeFromName()。服务器在其自己的web.xml中有一个预先列出的<mime-mapping>条目的所有默认MIME类型,您可以在webapp自己的web.xml中覆盖/扩展这些条目。

+0

感谢您关注此事,BalusC。我直接链接。从“查看源代码”的链接如下所示:http:// server_name:8080/res/32-06Feb2012.154159-uploadLots-test%20lots-3.xls。而这个问题只发生在IE中。如果我要通过servelet应该代码做类似的工作,你的答案在这里http://stackoverflow.com/questions/8991478/action-link-and-download-link-in-one? – Herzog 2012-02-06 15:25:55

+0

如果你直接链接,那么这将是一个JBoss服务器本身的错误(我实际上并不期待)。你可以请求显示它在XLS文件请求中返回的响应头文件吗? – BalusC 2012-02-06 15:27:24

+0

当我这样做的时候,我在开发工具的HTML选项卡下面得到了大量的垃圾(基本上与页面本身相同)。脚本选项卡有这个,我怀疑是有帮助的。我应该去的其他地方?顺便说一句,我的浏览器是IE8。我应该更新到9? – Herzog 2012-02-06 15:56:38

相关问题