Jboss rich:fileUpload限制文件大小:maxRequestSize不起作用

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}"

我正在使用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}" 
                    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>