Multipart File Upload:Size exceed exception in spring boot return JSON error message
10,679
Solution 1
As par I know you can handle the multipart file exception by using this.
@ControllerAdvice
public class MyErrorController extends ResponseEntityExceptionHandler {
Logger logger = org.slf4j.LoggerFactory.getLogger(getClass());
@ExceptionHandler(MultipartException.class)
@ResponseBody
String handleFileException(HttpServletRequest request, Throwable ex) {
//return your json insted this string.
return "File upload error";
}
}
Solution 2
Add a special exception handler into your Controller:
@ExceptionHandler(FileSizeLimitExceededException.class)
public YourReturnType uploadedAFileTooLarge(FileSizeLimitExceededException e) {
/*...*/
}
(If this does not work, you have to enable exception handling in your configuration. Normally Spring does this by default.)
Comments
-
MasterCode almost 2 years
As I have set maximum file upload limit,I am getting
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 2097152 bytes
error while uploading file.It is giving 500 error to my api,I should I handle this error and return response in
JSON
format not an errorpage as provided inErrorController
I want to catch that exception and give JSON response not
ErrorPage
.@RequestMapping(value="/save",method=RequestMethod.POST) public ResponseDTO<String> save(@ModelAttribute @Valid FileUploadSingleDTO fileUploadSingleDTO,BindingResult bindingResult)throws MaxUploadSizeExceededException { ResponseDTO<String> result=documentDetailsService.saveDocumentSyn(fileUploadSingleDTO, bindingResult); return result; }
DTO that accepts document as follows
public class FileUploadSingleDTO { @NotNull private Integer documentName; private Integer documentVersion; @NotNull private MultipartFile file; }
-
Srinivas Rampelli over 8 yearsAfter digging into source code, I found that CommonsMultipartResolver is handling the FileSizeLimitExceededException exception and throwing throw new MultipartException("Could not parse multipart servlet request", ex); here ex is the FileSizeLimitExceededException, which is actually thrown by commons.fileupload.FileuploadBase class. So you cannot handle the FileSizeLimitExceededException. Use generic implementation file upload errors using MultipartException.
-
quintin over 6 years@RampelliSrinivas it will be very help full if you can explain the comment you wrote above a bit.