Struts 2
  1. Struts 2
  2. WW-2073

File upload - maximum size validation does not work; (JakartaMultiPartRequest with struts.multipart.maxSize overrides fileInterceptor.maxsize)

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 2.0.9
    • Fix Version/s: Future
    • Component/s: Core Interceptors
    • Labels:
      None
    • Flags:
      Patch

      Description

      By adding upload.setSizeMax to JakartaMultiPartRequest (@see https://issues.apache.org/struts/browse/WW-1549), the file upload interceptor max size validation has been disabled. Furthermore, whenever there is a single file above the allowed size none of the request parameters are set on the action This happens due to upload.parseRequest(createRequestContext(servletRequest)) which throws exception (o.a.c.fileupload.FileItemIteratorImpl checks max size).
      If the application requires the parameters it will fail.

      There is also slight confusion and disconnect between:
      struts.multipart.maxSize and fileInterceptor.maxsize

      If you upload file that exceeds allowed struts.multipart.maxSize fileInterceptor will never kick in.

      IMHO file upload interceptor should be responsible for max size validation (esp. that it reports errors as field errors and not as action errors).
      Furthermore, we should drop 'struts.multipart.maxSize' since is confusing along with fileInterceptor.maxsize, also fileInterceptor.maxsize should get a new default max size. The other option is to use struts.multipart.maxSize to set fileInterceptor.maxsize.

      This line should be removed so file interceptor can validate files:
      ------
      Index: src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
      ===================================================================
      — src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java (revision 560614)
      +++ src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java (working copy)
      @@ -86,7 +86,6 @@
      // Parse the request
      try {
      ServletFileUpload upload = new ServletFileUpload(fac);

      • upload.setSizeMax(maxSize);
        List items = upload.parseRequest(createRequestContext(servletRequest));

      --------------

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Unassigned
            Reporter:
            Lukasz Racon
          • Votes:
            3 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development