2012-02-06 71 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

相關問題