K. *_*ddy 9 java spring-mvc spring-boot
我有简单的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);
}
Run Code Online (Sandbox Code Playgroud)
问题是我得到的异常是MultipartException而不是MaxUploadSizeExceededException.
stacktrace是: 无法解析多部分servlet请求; 嵌套异常是java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException:字段myFile超过其允许的最大大小2097152字节.
在文件大小超过的情况下为什么我没有得到MaxUploadSizeExceededException?我得到它的父Exception MultipartException,除了文件大小超出之外,还可能由于许多其他原因而发生.
有什么想法吗?
小智 7
我遇到了同样的问题,看起来只有 Commons File Upload 的 MultipartResolver 实现抛出 MaxUploadSizeExceededException 而不是 MultipartResolver Servlet 3.0 实现。
这是我到目前为止所做的。这里的关键是允许在控制器上检查文件,然后您可以验证大小并设置错误。
在 multipart 下面设置 multipart 属性: max-file-size: -1 max-request-size: -1
设置 Tomcat 8 (maxSwallowSize="-1")
在控制器上,添加逻辑来检查大小
if(fileAttachment.getSize() > 10485760) { throw new MaxUploadSizeExceededException(fileAttachment.getSize()); }
| 归档时间: |
|
| 查看次数: |
10211 次 |
| 最近记录: |