springboot文件上传时maxPostSize设置大小失效问题及解决

 更新时间:2023年07月18日 16:33:52   作者:DRNB666  
这篇文章主要介绍了springboot文件上传时maxPostSize设置大小失效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springboot文件上传时maxPostSize设置大小失效

报错信息

Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector

Caused by: java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector

该配置尝试无效,百度说是版本问题,核对过后发现无误

servlet:
    multipart:
      enabled: true
      max-file-size: 1000MB
      max-request-size: 1000MB

解决办法

因为我这里上传是传图片,图片以base64形式携带在请求参数中,form表单的形式提交,故怀疑可能是请求参数大小被限制了,于是添加以下配置

#注意这是server!!不是上面的servlet,别看错了。。。
server:
  tomcat:
    max-http-post-size: 100MB  #请求参数长度
    max-http-form-post-size: 100MB #form表单长度

重启解决

springboot设置文件上传大小限制

问题

SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常:

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

解决方法

第一种解决方案:

增加Bean配置,注意当前类上需要加注解@Configuration,不然扫不到就不会起作用了;一般配置放在启动类中就可以。

/**  
 * 文件上传配置  
 * @return  
 */
@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();  
    //文件最大
    factory.setMaxFileSize("10240KB"); //KB,MB
    /// 设置总上传数据总大小
    factory.setMaxRequestSize("102400KB"); 
    return factory.createMultipartConfig();  
}

第二种解决方案:

在配置文件(application.properties/application.yml)中加入如下设置即可:

# 单个文件大小(Mb和Kb都可以)
spring.servlet.multipart.maxFileSize=30MB
# 总上传的数据大小
spring.servlet.multipart.maxRequestSize=30MB

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot中实现Redis缓存预热

    SpringBoot中实现Redis缓存预热

    缓存预热是一种在系统启动后,但在实际使用前将数据加载到缓存中的技术,本文主要来和大家一起探讨如何在Spring Boot应用程序中实现Redis缓存预热,以确保系统在处理请求前就已经处于最佳状态,感兴趣的可以了解下
    2023-11-11
  • Java使用IO模拟注册登录

    Java使用IO模拟注册登录

    这篇文章主要为大家详细介绍了Java使用IO模拟注册登录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • java简单坦克大战制作代码

    java简单坦克大战制作代码

    这篇文章主要介绍了java简单坦克大战制作代码,利用Java语言中的集合、Swing、线程等知识点编写一个坦克大战游戏,需要的朋友可以参考下
    2016-07-07
  • 详解使用@RequestBody取POST方式的json字符串

    详解使用@RequestBody取POST方式的json字符串

    这篇文章主要介绍了详解使用@RequestBody取POST方式的json字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java基础之多线程

    Java基础之多线程

    以下是我们Java基础多线程的一些知识点总结,看完以后会觉得多线程也可以这么简单,小编精心推荐,希望能对大家有所帮助
    2018-09-09
  • Java下Struts框架中的ActionForm类详解

    Java下Struts框架中的ActionForm类详解

    这篇文章主要介绍了Java下Struts框架中的ActionForm类详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java异步处理机制实例详解

    Java异步处理机制实例详解

    本文涉及Java编程中异步处理机制的简单介绍和一个相关实例,相信通过这篇文章,大家能对异步处理有更多的了解。
    2017-09-09
  • 解析iReport自定义行数分页的操作方法

    解析iReport自定义行数分页的操作方法

    ireport默认都是自动分页数据超出页面长度就会自动分到下一页,但有时候业务需要一页只显示固定几行这时候就需要自定义条数了。下面看具体操作吧
    2021-10-10
  • redis深入浅出分布式锁实现上篇

    redis深入浅出分布式锁实现上篇

    在单体应用中,如果我们对共享数据不进行加锁操作,会出现数据一致性问题,我们的解决办法通常是加锁。下面我们一起聊聊使用redis来实现分布式锁
    2022-08-08
  • Java查找 List 中的最大最小值实例演示

    Java查找 List 中的最大最小值实例演示

    这篇文章主要介绍了JAVA得到数组中最大值和最小值的简单实例,需要的朋友可以参考下
    2017-04-04

最新评论