SpringBoot 无法捕获 maximum upload size exceeded
一、现象
SpringBoot项目配置了配置了上传文件的最大值限制,当上传的文件超过最大值的限制时会抛出MaxUploadSizeExceededException异常,如下
此时通过@RestControllerAdvice全局异常捕获类,也无法捕获到该异常,导致结果无任何响应
2020-01-07 09:40:31 [http-nio-8081-exec-1] [ERROR] o.a.c.c.C.[.[.[/video].[dispatcherServlet] [175]- Servlet.service() for servlet [dispatcherServlet] in context with path [/video] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (71091753) exceeds the configured maximum (1048576)] with root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (71091753) exceeds the configured maximum (1048576)at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:808)at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256)at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280)at org.apache.catalina.connector.Request.parseParts(Request.java:2868)at org.apache.catalina.connector.Request.parseParameters(Request.java:3196)at org.apache.catalina.connector.Request.getParameter(Request.java:1113)at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:85)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)
二、在SpringBoot的application.properties文件中加上如下配置
spring.servlet.multipart.max-file-size = 50MB
spring.servlet.multipart.max-request-size = 50MB
spring.servlet.multipart.resolve-lazily=true #设置为懒加载,不然依然会捕获不到异常
server.tomcat.max-swallow-size = 100MB # 最重要的是这一行,可设置为 -1 不作限制
注意: 上面最重要的是要配置内嵌的 tomcat 的最大吞吐量即 max-swallow-size,可以设置 -1 不限制,也可以设置一下比较大的数字。当上传文件超 tomcat 的大小限制后会先于 Controller 触发异常,所以这时我们的异常处理类无法捕获 Controller 层的异常了,这就是无法捕获到异常的根本原因。
配置全局异常类,用于捕获MaxUploadSizeExceededException 异常
@RestControllerAdvice(annotations = {ControllerAdvice.class, RestController.class})
public class GlobalExceptionHandler {@ExceptionHandler(MultipartException.class)public ResponseResult uploadExcepttion(MultipartException e){return ResponseResult.failed(500, "上传失败");}
}
SpringBoot 无法捕获 maximum upload size exceeded相关推荐
- org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nes
使用springboot上传文件,当文件超过2M报出异常 异常显示org.springframework.web.multipart.MaxUploadSizeExceededException: M ...
- Maximum upload size exceede上传文件大小超出解决
在这里记录三种方法, 努力提高自己的姿势水平 application.yml配置 spring:servlet:multipart:enabled: truemax-file-size: 10MB # ...
- js中报错“Maximum call stack size exceeded“解决方法
js中报错"Maximum call stack size exceeded"解决方法 参考文章: (1)js中报错"Maximum call stack size ex ...
- ERROR in app.js from UglifyJs RangeError: Maximum call stack size exceeded
在使用webpack中的uglify时报错: ERROR in app.js from UglifyJs RangeError: Maximum call stack size exceeded 看了 ...
- bootstrap validator 出现Maximum call stack size exceeded
如果用 c# 里面用的是 taghelper 的控件,有可能造成 Maximum call stack size exceeded bootstrap validator 必须是继承 bootst ...
- JS 异常: Uncaught RangeError: Maximum call stack size exceeded
遇到了这个js异常, 总是吧浏览器搞崩溃,这是什么原因呢? 开始我也只能想到死循环, 也许是哪个条件判断写错了,其实不是.经过google,发现了一篇文章,内容请看: ================ ...
- JS报错:Uncaught RangeError: Maximum call stack size exceeded
之前,遇到Uncaught RangeError: Maximum call stack size exceeded,查了一下,这个就是"最大堆栈超过了最大值",一般这种错误也是在 ...
- Vue -- 项目报错整理(1):RangeError: Maximum call stack size exceeded
这几天项目运行报了个错: Uncaught RangeError: Maximum call stack size exceeded,刚开始看到 "returnNodeParameter&q ...
- 解决 VUE前端项目报错:RangeError: Maximum call stack size exceeded
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 我点击菜单按钮报错: RangeError: Maximum call stack size ...
- vue 微信开发工具 Maximum call stack size exceeded
文章目录 现象 原因 解决方案 现象 某段代码出现了内存溢出的现象 原因 出现了死循环调用的代码片段 解决方案 仔细检查一下,很容易发现的 案例场景: [Vue warn]: Error in v-o ...
最新文章
- ReSharper 配置及用法
- 修改android virtual device路径
- 初级Java开发与架构之间的差距不仅仅是开发时间
- 网络请求之优化参数添加工具类自定义Map类
- C++的RTTI基本原理
- 线性方程组的5种描述方式
- 【漏洞预警】Intel爆CPU设计问题,导致win和Linux内核重设计(附测试poc)
- 计算机专业导论论文范文,计算机新导论论文范文
- 软件测试非功能性需求,什么是非功能测试?非功能测试包括哪些类型?
- KeilC51基础 利用仿真测试代码的运行时间
- c语言十六进制字符串求和,一串十六进制求和软件 两个十六进制怎么相加的
- 厦门大学计算机专业录取分数线2019,厦门大学录取分数线2019
- 2014校园招聘之一(8月华为机试题)
- 【Apache运维基础(5)】Apache的Rewrite攻略(2)
- ora-04098:触发器 无效且未通过重新验证问题解决之权限
- 使用ffmpeg合成哔哩哔哩m4s格式的音视频流为mp4
- “数”峰亮剑,优炫数据库助力国产数据库算法对抗赛成功举办
- 淘宝滑块的解决方法和api接口
- 1100 校庆(JAVA)
- 外汇天眼:如何交易外汇缺口?
热门文章
- android 360开机启动,手机360设置开机启动项
- python中的re模块
- 手机怎么识别图片上的文字
- 51单片机入门(3)点灯的进阶——跑马灯(通过阻塞延时实现)
- Android studio Minimum supported Gradle version is 7.2. Current version is 7.0.2.
- python面试题No5
- 有哪些基于苹果HomeKit的全屋智能家居组合
- Linux端口被占用怎么解决
- 服务器2008r2启动修复,Windows Server 2008 R2原生启动试用
- 评估期已过.有关如何升级您的测试版软件的信息,请访问,sql server 2008 r2评估期已过。有关如何升级的测试版软件的信息...