[英]How to handle maximum file size Exception in Spring Boot?
我使用Spring Boot v1.2.5创建REST应用程序。 上传图片时,我检查了最大文件大小,提供了以下属性:
multipart.maxFileSize= 128KB
在application.properties中。 该工具由Spring Boot本身提供。 现在检查工作正常。 问题是,如何处理异常并向用户返回一条他能理解的消息?
更新1 ----------
我在Controller中编写了一个方法,我打算使用@ExceptionHandler
来处理MultipartException。 它似乎不起作用。
这是我的代码:
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
更新2 ----------
在@luboskrnac指出之后,我设法找到了解决方案。 我们可以在这里使用ResponseEntityExceptionHandler
来处理这种特殊情况。 我相信,我们也可以使用DefaultHandlerExceptionResolver
,但是ResponseEntityExceptionHandler
将允许我们返回ResponseEntity
,而不是前者,其方法将返回ModelAndView
。 我没有尝试过。
这是我用来处理MultipartException
的最终代码:
@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
private static final Logger LOGGER = Logger.getLogger(CustomResponseEntityExceptionHandler.class);
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
@ResponseBody
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
}
您还可以使用常规的Spring MVC功能,如
@ExceptionHandler
方法和@ControllerAdvice
。 然后ErrorController
将获取任何未处理的异常。
由于在@Controller @Controller/@ExceptionHandler/@ControllerAdvice
功能发挥作用之前, MultipartException
似乎很明显,你应该使用ErrorController
来处理它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.