记录:The field files exceeds its maximum permitted size of 1048576 bytes...解决方案亲测有效

Posted bug菌¹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录:The field files exceeds its maximum permitted size of 1048576 bytes...解决方案亲测有效相关的知识,希望对你有一定的参考价值。

👨‍🎓作者:bug菌

✏️博客:CSDN掘金

💌公众号:猿圈奇妙屋

🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。

🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。

一、前言🔥

环境:jdk1.8 + springboot 2.3.1.RELEASE + mysql 5.6

二、排错分析🔥

        非常离谱啊,这回遇到的报错,我不就是做了个多文件上传么,怎么得,这还得给我来个bug尝尝?拉低我coding效率?这小心思也忒坏了吧。

        我是用的springboot框架,谁都知道,现在的单应用都通过它来作为项目基础架构。然后涉及到一个需求是要支持文件的批量保存,眼瞅这需求,我一刻钟把它搞定。谁知道,在我火急火燎的写完后,意外发生了,给我报了个错,猝不及防,我正把postman测试接口反馈成功截图发给前端小伙伴呢,吓得我立马撤回了群消息,这心想,有bug,到时候他们接起来报错又得来diss我,我可不干!

        所以,我正打算定位问题并徒手干掉它!

如下是主要报错信息:

org.springframework.web.multipart.MaxUploadSizeExceededException: 
    Maximum upload size exceeded; nested exception is java.lang.IllegalStateException:
        org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: 
            The field files exceeds its maximum permitted size of 1048576 bytes.

 如下是完整报错信息截图,仅供参考:

        中译过来就是说:该上传的文件大小超过最大上传大小,1048576字节(1Mb???),离谱啊就。眼瞅这报错,我大概心里知道是啥问题了;显示上传文件大小超过允许范围?超过谁的限制?这值得思考,定位到这儿,屏幕前的你是否察觉到什么端倪了没有?

        我查阅相关文档,从这段文档中找到了答案。

如下是具体官文描述:

65.5 Handling Multipart File Uploads
Spring Boot embraces the Servlet 3 javax.servlet.http.Part API to support uploading files. 
By default Spring Boot configures Spring MVC with a maximum file of 1Mb per file and a
maximum of 10Mb of file data in a single request. You may override these values, as well
as the location to which intermediate data is stored (e.g., to the /tmp directory) and the
threshold past which data is flushed to disk by using the properties exposed in the
MultipartProperties class. If you want to specify that files be unlimited, for example,
set the multipart.maxFileSize property to -1.The multipart support is helpful when you
want to receive multipart encoded file data as a @RequestParam-annotated parameter of type
MultipartFile in a Spring MVC controller handler method.

        我从提取文档中提取了一些比较有价值的信息,我们可以从这句:Spring Boot configures Spring MVC with a maximum file of 1Mb per file and a maximum of 10Mb of file data in a single request...可以得知,说明对文件上传有默认最大限制,即最大可支持1MB的文件大小,在单个请求中最多可容纳10Mb的文件数据。且从这句disk by using the properties exposed in the MultipartProperties class...可以得知,这个文件上传大小限制可以自定义,可以在你的配置文件(.properties/.yaml)上自定义设置。(multipart.maxFileSize)

        ok!真相大白。知道为何报错了,我这就在配置文件上进行自定义配置。

三、解决方案🔥

        从官网中可以看出,对于不同的springboot版本有一定的差异配置。如下我就以.properties文件语法进行举例说明啦,.yaml语法你们就自己转写一下就行啦。

Spring Boot 1.3.x或之前版本,配置如下:

multipart.maxFileSize=100Mb
multipart.maxRequestSize=1000Mb

Spring Boot 1.4.x版本及以上,配置如下:

spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=1000Mb

Spring Boot 2.0版本及以上,配置如下:

spring.servlet.multipart.max-file-size = 100MB
spring.servlet.multipart.max-request-size = 1000MB

💢注意:具体设置文件上限大小就依你们实际需求而定,我只是举个例子,设置的单文件最大100M,单个请求中文件总大小不超过1000M。如若没啥额外规定,按照我给的也足够满足啦。

四、示例🔥

        如下是我实际在项目的配置文件所配置的文件默认上限,仅供参考:

 application-test.yaml

#设置tomcat文件上传大小限制
spring:
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 1000MB

五、文末🔥

        如果你还想要学习更多,小伙伴们大可关注bug菌专门为你们创建的专栏《bug调优》,都是我一手打下的江山,持续更新中,希望能帮助到更多小伙伴们。

       我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

        最后送大家两句我很喜欢的话,与诸君共勉!


☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以start。

🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。


​​​

💌如果文章对您有所帮助,就请留下您的吧!(#^.^#);

💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;

💗如果对文章有任何疑问,还请文末留言或者加群吧【QQ交流群:708072830】;

💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);

💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。

以上是关于记录:The field files exceeds its maximum permitted size of 1048576 bytes...解决方案亲测有效的主要内容,如果未能解决你的问题,请参考以下文章

异常The field file exceeds its maximum permitted size of 1048576 bytes.

SpringBoot 2.x 文件上传出现 The field file exceeds its maximum permitted size of 1048576 bytes

Spring Boot做文件上传时出现了The field file exceeds its maximum permitted size of 1048576 bytes.错误

sqlldr错误:field in data file exceeds maximum length

sqlldr错误:field in data file exceeds maximum length

MYSQL碰到The total number of locks exceeds the lock table size 问题解决记录