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.