我有一个简单的SpringBoot应用程序,具有文件上传功能,其中最大文件上传大小为2 MB。
我已配置 multipart.max-file-size=2MB
,它可以正常工作。
但是,当我尝试上传超过2 MB大小的文件时,我希望处理该错误并显示错误消息。
为此,我让我的控制器实现了HandlerExceptionResolver
,并实现了resolveException()
方法如下:
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception exception)
{
Map<String, Object> model = new HashMap<String, Object>();
if (exception instanceof MaxUploadSizeExceededException)
{
model.put("msg", exception.getMessage());
} else
{
model.put("msg", "Unexpected error: " + exception.getMessage());
}
return new ModelAndView("homepage", model);
}
问题是我得到的异常是 MultipartException 而不是 MaxUploadSizeExceededException。堆栈跟踪是: 无法解析多部分servlet请求;嵌套异常是 java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:字段 myFile 超过其最大允许大小 2097152 字节。
在文件大小超过的情况下,为什么我没有得到 MaxUploadSizeExceededException?我得到了它的父异常 MultipartException,它可能发生在文件大小超过之外的许多其他原因。
对此有什么想法吗?