Spring REST异常处理FileUploadBase $ SizeLimitExceededException

时间:2017-07-13 12:05:37

标签: spring-rest

我正在使用Spring Boot 1.5.3.RELEASE并使用一个Controller,它将一个MultipartFile与一些其他信息作为参数并返回一个文件。

现在,当文件超过最大尺寸时,我面临org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException

spring.http.multipart.maxFileSize=17728640
spring.http.multipart.maxRequestSize=17728640

这很好但我需要一个自定义响应,实际上只有在方法调用之前,服务器端 才会抛出异常。

任何人都可以告诉我如何定义处理此异常的自定义错误处理程序并响应ResponseEntity.status(HttpStatus.CONFLICT).body("size_exceeded")

之类的内容

我的方法:

@SuppressWarnings("rawtypes")
    @RequestMapping(value = "/{Id}/attachments", method = RequestMethod.POST)
    public ResponseEntity addTaskAttachment(@RequestParam("file") MultipartFile file, @PathVariable Long Id,
            @CurrentUser User currentUser) {
// Some code here
        ResponseEntity.status(HttpStatus.OK).body(attachmentAsByteArray);
    }

1 个答案:

答案 0 :(得分:0)

您的观察结果是正确的,@RestControllerAdvice的异常处理程序不适用于多部分异常,并且原因是MultipartFile解析&映射解析器步骤之前的验证步骤。

根据 geoand 对此SO question here的第一个接受的答案中的建议,您需要定义并注册ErrorController

另外,请注意,正如在该答案中已经提到的,Spring Boot已经定义了BasicErrorController,您可以通过添加来添加新内容类型以返回JSON等(因为默认值为text/html)一种新的公共方法@RequestMapping& @Produces