2011-10-10 165 views
1

得到這個代碼在JSF靜態文件下載:的MS Office 2007+與IE7 +

<h:outputLink title="#{msg.fileUpload_template_file}" styleClass="FormSubmitNoColor" type="application/vnd.ms-excel" value="#{facesContext.externalContext.requestContextPath}/resources/csvTemplates/02_myfile_V1.xlsx" >#{msg.fileUpload_template_file}</h:outputLink> 

此代碼做工精細的FF但IE認爲這是一個zip文件。爲什麼?

在此處找到mime類型Setting mime type for excel document 但無效。

回答

1

從技術上說,只有在servletcontainer自己的web.xml(如Tomcat中的/conf/web.xml)中列出的MIME類型才能根據文件擴展名進行識別和支持。

.xlsx擴展是比較新的,而不是由舊的servletcontainers支持。但是,您可以定義自定義MIME類型你的webapp的/WEB-INF/web.xml

<mime-mapping> 
    <extension>xlsx</extension> 
    <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type> 
</mime-mapping> 

如果你有在servletcontainer完整的管理控制,你當然也可以將其添加在那裏,如Tomcat的/conf/web.xml文件。

它在FF中工作是因爲FF將根據文件擴展名根據客戶端特定的MIME類型映射(在Windows中調用時稱爲「文件關聯」)自行確定,當HTTP Content-Type響應標頭文件下載不存在或過於通用。

您在那裏找到的相關問題僅適用於.xls文件(並且已被大多數當前servlet容器默認支持)。您可以在這裏找到所有新的Office 2007 OpenXML文件MIME類型的概述:http://filext.com/faq/office_mime_types.php

相關問題