Jboss rich:fileUpload限制文件大小:maxRequestSize不起作用
我正在使用JBoss EPP 5.2.0和JSF 1.214、RichFaces 3.3.2.SR1以及org.JBoss.portletbridge 2.0.0.FINAL 我想重新设置上传文件的文件大小。 我尝试过以下方法: xhtml:Jboss rich:fileUpload限制文件大小:maxRequestSize不起作用,jboss,richfaces,jsf-1.2,Jboss,Richfaces,Jsf 1.2,我正在使用JBoss EPP 5.2.0和JSF 1.214、RichFaces 3.3.2.SR1以及org.JBoss.portletbridge 2.0.0.FINAL 我想重新设置上传文件的文件大小。 我尝试过以下方法: xhtml: <rich:fileUpload id="uploader" fileUploadListener="#{controller.fileUploadlistener}"
<rich:fileUpload id="uploader"
fileUploadListener="#{controller.fileUploadlistener}"
immediateUpload="true"
allowFlash="false"
maxFilesQuantity="#{controller.uploadsLeft}"
acceptedTypes="pdf,jpg,tif,pgm,pbm,png">
<a4j:support event="onuploadcomplete" reRender="uploadedFiles" />
</rich:fileUpload>
portlet.xml:
<filter>
<filter-name>MyResourceFilter</filter-name>
<filter-class>my.package.MyResourceFilter</filter-class>
<lifecycle>RESOURCE_PHASE</lifecycle>
<init-param>
<name>maxRequestSize</name>
<value>2000000</value>
</init-param>
</filter>
如果有人能检查一下代码就好了。
这对你合适吗
问候
马克斯
public class MyResourceFilter implements ResourceFilter {
public static final String MULTIPART = "multipart/";
public static final String AJAX4JSF_FILTER = "org.ajax4jsf.Filter";
public static final String PARAM_MAX_REQUEST_SIZE = "maxRequestSize";
private static final Logger LOGGER = LoggerFactory.getLogger(MyResourceFilter.class);
private int uploadLimit = 0;
@Override
public void destroy() {
}
@Override
public void init(FilterConfig config) throws PortletException {
String maxRequestSizeParam = config.getInitParameter(PARAM_MAX_REQUEST_SIZE);
if (maxRequestSizeParam != null) {
try {
uploadLimit = Integer.parseInt(maxRequestSizeParam);
} catch (NumberFormatException nfe) {
LOGGER.warn("invalid Filter init parameter value in portlet.xml: " + PARAM_MAX_REQUEST_SIZE + " - " + maxRequestSizeParam);
}
}
}
@Override
public void doFilter(ResourceRequest resourceRequest, ResourceResponse resourceResponse, FilterChain filterChain)
throws IOException, PortletException {
String resourceKey = resourceRequest.getParameter(PortletResourceBuilder.RFRES);
if (null == resourceKey) {
// Handle File Upload
if (isMultipartContent(resourceRequest)) {
String uid = resourceRequest.getParameter(FileUploadConstants.UPLOAD_FILES_ID);
ResourceRequestWrapper resourceRequestWrapper = new ResourceRequestWrapper(resourceRequest);
String contentLength = resourceRequestWrapper.getHeader("Content-Length");
int contentLengthInt = Integer.parseInt(contentLength);
if (contentLength != null && uploadLimit > 0
&& contentLengthInt > uploadLimit) {
throw new FileUploadException("Multipart request is larger than allowed size");
}
}
}
filterChain.doFilter(resourceRequest, resourceResponse);
}
private static boolean isMultipartContent(ResourceRequest request) {
boolean vReturn = false;
String contentType = request.getContentType();
if (contentType == null) {
vReturn = false;
} else if (contentType.toLowerCase().startsWith(MULTIPART)) {
vReturn = true;
}
return vReturn;
}
}
<filter>
<filter-name>MyResourceFilter</filter-name>
<filter-class>my.package.MyResourceFilter</filter-class>
<lifecycle>RESOURCE_PHASE</lifecycle>
<init-param>
<name>maxRequestSize</name>
<value>2000000</value>
</init-param>
</filter>