的MS Office 2007+与IE7 +

问题描述:

得到这个代码在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 但无效。

从技术上说,只有在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