如何获取MaxUploadSizeExceededException

时间:2019-05-17 15:25:18

标签: java spring-boot controller-advice

我正在使用Spring Boot 2开发RESTful api,并尝试上传在yml文件中设置为servlet.multipart.max-file-size=2MB的限制文件。

根据我的要求,需要将上传的2MB以上的任何文件大小以及请求信息(getUser())和异常插入数据库。我可以使用@ExceptionHandler生成异常消息,但没有得到请求信息(getUser())。请告知。

我在其余控制器上使用webRequest.setAttribute尝试使用WebRequest webRequest,但在@ExceptionHandler中得到了Null。

我的控制器和控制器建议:

@PostMapping(path = "/sendEmail")
    public ResponseEntity<EmailVO> sendEmail(@RequestPart(value = "file", required = false) MultipartFile[] uploadfile,
            @RequestPart EmailVO emailVO,WebRequest webRequest, HttpServletRequest httprequest) {
        webRequest.setAttribute("emailVO", emailVO, RequestAttributes.SCOPE_REQUEST);
        EmailVO emailVO = myService.sendEmail(emailVO, uploadfile);
        return new ResponseEntity<>(emailVO, HttpStatus.OK);
    }


@ExceptionHandler(Exception.class)
    public ExceptionResponse handleException(final Exception ex, final HttpServletRequest httprequest,WebRequest webrequest) {
        if (ex instanceof MaxUploadSizeExceededException) { 
            EmailVO  emailVO  = (EmailVO) webrequest.getAttribute(EmailVO, RequestAttributes.SCOPE_REQUEST);
            return new ExceptionResponse("Exceeds the limit for user "+emailVO.getUser,ex.getClass().getSimpleName(), httprequest.getRequestURI(),"Failure");
        } 
    }

我无法获取来自请求控制器的emailVO.getUser

0 个答案:

没有答案