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

Posted No8g攻城狮

tags:

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

本文目录

一、背景描述

二、错误原因

三、解决方案

3.1 SpringBoot 1.3.x 之前

3.2 SpringBoot 1.4.x

3.3 SpringBoot 2.0.x之后


一、背景描述

本项目是个Springboot 项目,功能是要做一个文件上传,在测试时发现报错,上传的是一个 word 文件,大小是 1.25MB,报错内容如下:

Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.

详细报错内容如下图所示:

二、错误原因

SpringBoot 项目在文件上传时出现了 Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. 的错误,显示文件的大小超出了允许的范围。原因是 SpringBoot内嵌的 tomcat 默认的所有上传的文件大小为 1MB,超出这个大小就会报错,解决这个问题需要更改以下两个默认。

  • multipart.maxFileSize
  • multipart.maxRequestSize

三、解决方案

解决方案呢,要根据SpringBoot的版本来确定,以下列举出了几种情况,可以根据自己项目的SpringBoot版本来对应:把默认的文件的大小限制修改一下即可。以下是我项目中的用到的文件大小限制,改成50MB即可满足我的需求了。

3.1 SpringBoot 1.3.x 之前

multipart.maxFileSize=50Mb
multipart.maxRequestSize=50Mb

3.2 SpringBoot 1.4.x

spring.http.multipart.maxFileSize=50Mb
spring.http.multipart.maxRequestSize=50Mb

3.3 SpringBoot 2.0.x之后

spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB

配置完上述限制之后,重启项目,Bingo,搞定!!!

完结!

记录: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 file exceeds its maximum permitted size of 1048576 bytes.的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

sqlldr错误:field in data file exceeds maximum length

sqlldr错误:field in data file exceeds maximum length

Android开发 Error:The number of method references in a .dex file cannot exceed 64K.