问题
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 in ErrorController
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;
}
回答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";
}
}
回答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.)
来源:https://stackoverflow.com/questions/34172182/multipart-file-uploadsize-exceed-exception-in-spring-boot-return-json-error-mes