Spring Boot上传文件 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException

目的:解决项目上传文件1Mb的限制方法,我在开发中碰到过好几个地方对上传文件都有1Mb的限制,可实际开发中远远不够,这就需要我们去修改默认配置了,破解上传文件1Mb的禁锢

1.项目使用的是Spring Boot + Spring Cloud,上传附件报超出自带tomacat限制大小(默认1M)

当上传超过1Mb的时候会报如下错误:


Maximum upload size exceeded;org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.

2.解决方案 
(1)在配置文件(application.properties)加入如下代码

maxFileSize 单个数据大小 
maxRequestSize 是总数据大小(同时上传多个文件)

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

(2)把如下代码放在启动类上,并在类上加入@Configuration(第一种方法的原理就是第二种方法,但是第一种方法更常见,也更简单)


    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //  单个数据大小
        factory.setMaxFileSize("102400KB"); // KB,MB
        /// 总上传数据大小
        factory.setMaxRequestSize("102400KB");
        return factory.createMultipartConfig();
    }

如果此时还是上传文件还是报同样的错误,就考虑是否是有网关之类的中转,需在网关中也加入如上配置。(本人在解决这个问题的时候就忽略了这个,搞了半天)

3,如果后端接口可以上传成功,而在web中还是限制了的话就考虑nginx之类的中转器的限制,nginx上传文件也是现实1Mb

      解决办法:在nginx的配置文件中添加如下配置文件:详细介绍可以查看https://blog.csdn.net/weixin_38306434/article/details/86491905

可以选择在http{ }中设置:client_max_body_size   100m;

 也可以选择在server{ }中设置:client_max_body_size   100m;

还可以选择在location{ }中设置:client_max_body_size   100m;

三者到区别是:http{} 中控制着所有nginx收到的请求。而报文大小限制设置在server{}中,则控制该server收到的请求报文大小,同理,如果配置在location中,则报文大小限制,只对匹配了location 路由规则的请求生效。

    client_max_body_size 100m;
    client_header_timeout 1m;
    client_body_timeout 1m;
    proxy_connect_timeout 6000s;
    proxy_read_timeout 1m;
    proxy_send_timeout 1m;

这样上传文件大小的限制就解决了

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值