我使用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>
答案 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>