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

                 Key: WW-2073
                 URL: https://issues.apache.org/struts/browse/WW-2073
             Project: Struts 2
          Issue Type: Bug
          Components: Interceptors
    Affects Versions: 2.0.9
            Reporter: Lukasz Racon


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));

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

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to