You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot提交2MB以上文件POST报缺少certThumb参数异常

问题描述

Spring Boot 2.0.3.RELEASE版本开发场景下,页面提交大小为2MB及以上的文件POST请求时触发参数错误,经Chrome开发者工具确认,相关参数已正常携带在POST请求中,无法定位报错原因。

核心异常

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'certThumb' is not present
异常抛出点为Spring MVC参数解析器,调用链路经过Spring Security、Keycloak安全过滤器链,最终由Tomcat容器接收请求。

问题根因

Spring Boot 2.0.x版本内嵌Tomcat默认配置的POST请求最大允许大小为2MB,当请求总大小(包含上传文件、普通表单参数)超过该阈值时,Tomcat不会直接返回413 Request Entity Too Large错误,而是静默丢弃请求体内的所有表单参数,最终导致Controller层无法读取certThumb这类必填的@RequestParam参数,抛出参数缺失异常。
该问题的触发阈值与描述的2MB复现条件完全匹配。

解决方案

根据部署方式选择对应配置调整即可:

  • 内嵌Tomcat启动(Spring Boot默认启动方式)
    在项目配置文件中同步调整Tomcat POST限制和Spring Multipart上传限制,按需设置阈值,以下为10MB阈值的配置示例:
    properties格式配置(application.properties):
    # Tomcat POST请求最大大小限制
    server.tomcat.max-http-post-size=10MB
    # 单文件最大上传大小
    spring.servlet.multipart.max-file-size=10MB
    # 整个请求最大大小
    spring.servlet.multipart.max-request-size=10MB
    
    yaml格式配置(application.yml):
    server:
      tomcat:
        max-http-post-size: 10MB
    spring:
      servlet:
        multipart:
          max-file-size: 10MB
          max-request-size: 10MB
    
  • 外置Tomcat部署
    修改Tomcat配置目录下的conf/server.xml文件,找到HTTP服务对应的Connector节点,添加maxPostSize属性(单位为字节,10MB对应值为10485760):
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxPostSize="10485760" />
    

配置完成后重启服务,再次提交2MB以上文件即可验证问题修复。

内容的提问来源于stack exchange,提问作者Joao Paulo de Lima Boaventura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:36:21