的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