我在开发时文件上传接口时, 测试过程中发现, 上传文件过大时虽然全局异常捕获到了, 但是异常处理结果不返回到前端。
后台报错:

2019-10-12 10:09:02.881 [http-nio-8989-exec-10] ERROR com.szjk.file.exception.GlobalExceptionHandler - 异常: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 (80405163) exceeds the configured maximum (10485760)
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 (80405163) exceeds the configured maximum (10485760)at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:121)at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:114)at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:87)at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:87)at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1176)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1011)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)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.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)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.FormContentFilter.doFilterInternal(FormContentFilter.java:92)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)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.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)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:200)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)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:200)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)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.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)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:836)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747)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)
Caused by: java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (80405163) exceeds the configured maximum (10485760)at org.apache.catalina.connector.Request.parseParts(Request.java:2899)at org.apache.catalina.connector.Request.parseParameters(Request.java:3194)at org.apache.catalina.connector.Request.getParameter(Request.java:1116)at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:84)... 24 more
Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (80405163) exceeds the configured maximum (10485760)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:2855)... 28 more

且接口调用没有异常处理结果,解决办法如下:

只需要在项目application.yml中配置:

server:tomcat:max-swallow-size: -1 #内置tomcat限制文件最大大小   -1为不限制
spring:servlet:multipart:max-file-size: 20MB   #单文件最大限制max-request-size: 200MB #总文件最大限制

配置好后,上传文件超过限制,异常正常捕获并返回可接口调用端

然后满心欢喜,打包运行在tomcat中(tomcat9), 哦豁, 报错,
tomca9中日志报错信息如下:
2019-10-12 09:41:21.384 [http-nio-8080-exec-8] ERROR com.szjk.file.exception.GlobalExceptionHandler - 异常:Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase F i l e S i z e L i m i t E x c e e d e d E x c e p t i o n : T h e f i e l d f i l e e x c e e d s i t s m a x i m u m p e r m i t t e d s i z e o f 20971520 b y t e s . 2019 − 10 − 1209 : 41 : 22.348 [ h t t p − n i o − 8080 − e x e c − 9 ] E R R O R c o m . s z j k . f i l e . e x c e p t i o n . G l o b a l E x c e p t i o n H a n d l e r − 异 常 : M a x i m u m u p l o a d s i z e e x c e e d e d ; n e s t e d e x c e p t i o n i s j a v a . l a n g . I l l e g a l S t a t e E x c e p t i o n : o r g . a p a c h e . t o m c a t . u t i l . h t t p . f i l e u p l o a d . F i l e U p l o a d B a s e FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 20971520 bytes. 2019-10-12 09:41:22.348 [http-nio-8080-exec-9] ERROR com.szjk.file.exception.GlobalExceptionHandler - 异常:Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase FileSizeLimitExceededException:Thefieldfileexceedsitsmaximumpermittedsizeof20971520bytes.2019−10−1209:41:22.348[http−nio−8080−exec−9]ERRORcom.szjk.file.exception.GlobalExceptionHandler−异常:Maximumuploadsizeexceeded;nestedexceptionisjava.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBaseFileSizeLimitExceededException: The field file exceeds its maximum permitted size of 20971520 bytes.
2019-10-12 09:41:23.335 [http-nio-8080-exec-10] ERROR com.szjk.file.exception.GlobalExceptionHandler - 异常:Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 20971520 bytes.

然后搜索解决方案。。。。
网上说在tomcat的server.xml 文件中 <Connector 配置 maxPostSize="-1" 。
不行不行不行。。。。。
还试了其他的方法
还是不行

最后快放弃的时候,想到既然springboot项目运行在内置的tomcat中配置 max-swallow-size=-1 就可以了,那么试试在tomcat的server.xml文件中配置maxSwallowSize="-1"。果然,application.yml 中的max-swallow-size 参数驼峰命名后配置到<Connector 中。运行tomcat, 上传文件超过限制,异常正常捕获并返回可接口调用端 。 配置如下:![在这里插入图片描述])

SpringBoot 项目文件上传过大报错不返回解决方案相关推荐

  1. springboot 上传文件报错:java.io.IOException: The temporary upload location [/tmp/tomcat.xxx] is not valid

    前言: 之前上线半个月后的项目,突然发现图片上传的接口有问题,无法上传,提示java.io.IOException: The temporary upload location [/tmp/tomca ...

  2. 解决Springboot文件上传报错,java.io.FileNotFoundException: D:\System\Temp\tomcat.819...00.tmp (系统找不到指定的文件。)

    Springboot文件上传,csdn上的方法无非是下面这两个: imgFile.transferTo(imageFolder); // 方法一/*** 方法二* FileUtils.copyInpu ...

  3. 普元 AppServer 6.5 将springboot应用部署到应用服务器,上传文件时报错:Caused by: org.springframework.web.multipart.Multipar

    [问题] springboot应用部署到应用服务器后,上传文件时报错: Caused by: org.springframework.web.multipart.MultipartException: ...

  4. SpringBoot 分片上传、断点续传、秒传、直传Minio

    最近在学习,在SpringBoot上进行分片上传.断点续传.直接上传到Minio服务器上,中间也遇到的不少坑.自定义minio继承MinioClient来实现分片上传.比较适合初学者. 一.大致的流程 ...

  5. SpringBoot文件上传和下载

    SpringBoot文件上传和下载 一.SpringBoot文件上传 1.SpringMVC文件上传 1.Client处理 选择文件(1)form表单 选择文件 method="post&q ...

  6. Spring MVC实现上传文件报错解决方案

    Spring MVC实现上传文件报错解决方案 参考文章: (1)Spring MVC实现上传文件报错解决方案 (2)https://www.cnblogs.com/liuling/p/2014-3-5 ...

  7. openstack-Mitaka Glance上传镜像报错

    上传镜像报错 查看日志 tail /var/log/glance/api.log tail /var/log/glance/registry.log 查看2个服务的日志,哪个错了就对相应的配置文件进行 ...

  8. laravel上传文件报错:413 Request Entity Too Large

    上传图片的时候,是用laravel自带的上传图片的方法,一下气上传了20张,结果就无情报错: 413 Request Entity Too Large,后面查一下,这个报错信息是nginx报的错误,不 ...

  9. 补习系列(11)-springboot 文件上传原理

    一.文件上传原理 一个文件上传的过程如下图所示: 浏览器发起HTTP POST请求,指定请求头: Content-Type: multipart/form-data 服务端解析请求内容,执行文件保存处 ...

最新文章

  1. 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...
  2. 关于DEDECMS自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案...
  3. Linux培训教程 Git在linux下的使用
  4. 为vim编辑器增加行号功能
  5. UITextField实现左侧空出一定的边距
  6. 嵌入式里如何给内存做压力测试?不妨试试memtester
  7. C#LeetCode刷题之#409-最长回文串(Longest Palindrome)
  8. JS-面向对象-对象的特性-禁止对象扩展 / 对象的特性-封印对象 / 对象的特性-冻结对象
  9. 【Nginx】Nginx 工作原理
  10. OKR工作法阅读笔记(第一天)-序言和前言
  11. 全国省市区区划代码以及邮政编码数据最新版--Mysql版(上)
  12. Unity圆环进度条制作
  13. linux shell脚本 字符串、整数、小数判断
  14. Vissim和Matlab联合仿真的实现方法
  15. Cookie命名的由来
  16. 使用h5 canvas绘制圆形进度条
  17. HTC One 802w(联通双卡版本)刷机过程(只是记录大概的过程,网上已经有各步骤的详细过程)
  18. 1077 互评成绩计算
  19. Pytorch打怪路(三)Pytorch创建自己的数据集2
  20. 代码随想录回溯算法——重新安排行程

热门文章

  1. Unity3d 物体速度快直接穿透墙体没有发生碰撞怎么办?
  2. latex怎么看论文字数_LaTeX | 为学术论文排版而生【公式篇】
  3. make XXX_defconfig 分析
  4. python爬虫学习笔记一:网络爬虫入门
  5. AI+社区智能管理,赋能智慧城市人情共「智」(人工智能应用案例)
  6. Ubuntu19.04网易云音乐字体大小调整
  7. 简单的ps去掉图片上不想留的文字
  8. Android手机令牌教程
  9. 程序员的算法趣题Q55: 平分蛋糕
  10. 人才缺口达30万!前端人拿下这个证书有多吃香?!