gpt4 book ai didi

java - SpringBoot 当文件上传大小限制超过获取 MultipartException 而不是 MaxUploadSizeExceededException

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:24:11 25 4
gpt4 key购买 nike

我有简单的 SpringBoot 应用程序文件上传功能,其中最大文件上传文件大小为 2 MB。

我已经配置了 multipart.max-file-size=2MB 它工作正常。但是当我尝试上传大于 2 MB 的文件时,我想处理该错误并显示错误消息。

为此,我让我的 Controller 实现了 HandlerExceptionResolverresolveException() 实现,如下所示:

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,除了文件大小超出之外,还有许多其他原因可能会发生这种情况。

对此有什么想法吗?

最佳答案

我遇到了同样的问题,看起来只有 Commons 文件上传实现的 MultipartResolver 抛出 MaxUploadSizeExceededException 而不是 MultipartResolver Servlet 3.0 实现。

这是我到目前为止所做的。这里的关键是允许在 Controller 上检查文件,然后您可以验证大小并设置错误。

  1. 在下面设置多部分属性多部分:最大文件大小:-1最大请求大小:-1

  2. 设置 Tomcat 8 (maxSwallowSize="-1")

  3. 在 Controller 上,添加检查大小的逻辑

    if(fileAttachment.getSize() > 10485760 ) {抛出新的 MaxUploadSizeExceededException(fileAttachment.getSize());

关于java - SpringBoot 当文件上传大小限制超过获取 MultipartException 而不是 MaxUploadSizeExceededException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com