parameter data (excluding uploaded files) exceeded the limit for maxPostSize set

问题:

一个 springboot项目经过测试时,在文本框上传时传入大文本(大约5M的文字),系统报错:

The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector

根据上述文字可知,post的parameter data大小过大导致报错,

于是查了一下Tomcat不同版本的maxPostSize的设置

parameter data (excluding uploaded files) exceeded the limit for maxPostSize set

 

Solution:


修改Spring Boot内置Tomcat的maxPostsize值,在application.yml配置文件中添加以下内容:

server:  
  tomcat:
    max-http-post-size: -1

 

ps:不同类型项目同时注意大文件上传可能涉及到的其他问题

1. 修改前端框架上传控件jQuery Uploadify的上传文件限制大小

 

2. Spring MVC框架配置的文件上传模块中的MultipartResolver中的文件上传限制大小,

spring:
  servlet:
    multipart:
      max-file-size: 30Mb
      max-request-size: 100Mb

 

3. 修改Nginx服务器中conf目录下的nginx.conf配置文件中的client_max_body_size属性

 

4. Tomcat服务器中conf目录下的server.xml配置文件中的connectionTimeout属性、maxPostSize属性。

 

5. 修改数据库中最大允许数据包默认配置值。

Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16800061 > 16777216). You can change this value on the server by setting the max_allowed_packet’ variable.

Solution:
修改DB的max_allowed_packet值:

USE demo;
set global max_allowed_packet = 3*1024*1024*10; # 改为30M
show VARIABLES like '%max_allowed_packet%'; # 重启DB连接生效
Note:MySQL中max_allowed_packet 的 默认配置:16777216 = 16 * 1024 * 1024,即16M

 

6.涉及到得几个参数应该协调

memory_limit > post_max_size >= upload_max_filesize