myfaces ExtensionsFilter在下载过程中损坏了xlsx

时间:2014-04-03 11:41:50

标签: excel jsf jsf-1.2 myfaces tomahawk

我使用jsf 1.2和tomahawk inputFileUpload在同一页面上传和下载.xlsx文件。上传工作正常,即使有最大文件大小限制。当我下载并打开一些Excel电子表格时,我收到错误的文件已损坏。 Excel将修复该文件,但每次修复它都很烦人。此错误是由web.xml中的ExtensionFilter引起的。当我从web.xml中删除过滤器时,一切正常。

有什么解决方法可以防止在下载时拦截ExtensionFilter吗?或者,在上传文件之前,还有其他方法可以管理最大文件大小吗?谢谢

<h:form id="upload_form" styleClass="form" enctype="multipart/form-data">
    <t:saveState value="#{editedPeriodBean.editedPeriod}" />
        <h:panelGrid columns="1">
             <h:outputLabel for="file" value="#{ms['com.selectFile']}:" styleClass="full" />
             <t:inputFileUpload id="file" value="#{editedPeriodBean.uploadedFile}" required="true" onchange="verifyFile(this);"  />
             <h:commandButton id="submit_btn" value="#{ms['com.import']}" action="#{editedPeriodBean.importPaymentsToEditedPeriod}" disabled="true" styleClass="align_right" />
        </h:panelGrid>
</h:form>

的web.xml

<filter>
        <filter-name>Extensions Filter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
            <init-param>
                <description>
                    Set the size limit for uploaded files.
                        Format: 10  - 10 bytes
                                10k - 10 KB
                                10m - 10 MB
                                1g  - 1 GB
                </description>
                <param-name>uploadMaxFileSize</param-name>
                <param-value>20m</param-value>
            </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Extensions Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

1 个答案:

答案 0 :(得分:0)

web.xml中的这个参数解决了我的问题。

<context-param>
    <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>
    <param-value>org.apache.myfaces.component.html.util.StreamingAddResource</param-value>
 </context-param>