-
Type:
Bug
-
Status: Closed
-
Resolution: Fixed
-
Affects Version/s: 6.0.6 GA, 6.0.11 EE, 6.0.12 EE, 6.1.0 CE RC1
-
Fix Version/s: 6.0.X EE, --Sprint 12/11, 6.1.0 CE RC1
-
Component/s: Web Content > Web Content Administration
-
Labels:
-
Environment:Tomcat 6.0.32 + MYSQL 5. 6.0.x Revision 85652.
Tomcat 6.0.32 + MYSQL 5. 6.1.x Revision 85572.
-
Branch Version/s:6.0.x
-
Backported to Branch:Committed
-
Epic/Theme:
-
Fix Priority:3
-
Git Pull Request:
I have encounteredan error while uploading a file in my web content edit pane.
- I have created a new web content structure in which I have placed an image field.
- I have set a limit in my portal-ext.properties: com.liferay.portal.upload.UploadServletRequestImpl.max.size=102400
My Test case
- I create a new web content without the image.
- I publish the webcontent.
- I edit the webcontent
- I add a file that has a size larger than 100k,
- I press the publish button
Result:
The page is forwarded to "New Web Content" page
Expected:
What I would expect is to stay on the edit page and have an error specifying that the file size is larger that the maximum size.
Log file
In the log files, I see that an exception is thrown 14:20:49,931 ERROR [UploadServletRequestImpl:101] org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (214181) exceeds the configured maximum (102400) org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (214181) exceeds the configured maximum (102400) at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:914) at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331) at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:349) at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126) at com.liferay.portal.upload.LiferayFileUpload.parseRequest(LiferayFileUpload.java:56) at com.liferay.portal.upload.UploadServletRequestImpl.<init>(UploadServletRequestImpl.java:72) ...
I then looked at the code for the UploadServletRequestImpl, and in there we can see that the exception is swallowed and no information is raised to the calling application.
com.liferay.portal.upload.UploadServletRequestImpl.java
public UploadServletRequestImpl(HttpServletRequest request) { super(request); _params = new LinkedHashMap<String, LiferayFileItem[]>(); try { ServletFileUpload servletFileUpload = new LiferayFileUpload( new LiferayFileItemFactory(DEFAULT_TEMP_DIR), request); servletFileUpload.setSizeMax(DEFAULT_SIZE_MAX); _lsr = new LiferayServletRequest(request); List<LiferayFileItem> list = servletFileUpload.parseRequest(_lsr); for (LiferayFileItem fileItem : list) { if (fileItem.isFormField()) { fileItem.setString(request.getCharacterEncoding()); } LiferayFileItem[] fileItems = _params.get( fileItem.getFieldName()); if (fileItems == null) { fileItems = new LiferayFileItem[] {fileItem}; } else { LiferayFileItem[] newFileItems = new LiferayFileItem[fileItems.length + 1]; System.arraycopy( fileItems, 0, newFileItems, 0, fileItems.length); newFileItems[newFileItems.length - 1] = fileItem; fileItems = newFileItems; } _params.put(fileItem.getFieldName(), fileItems); } } catch (FileUploadException fue) { _log.error(fue, fue); } }