博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
The multi-part request contained parameter data (excluding uploaded files) that exceeded
阅读量:4081 次
发布时间:2019-05-25

本文共 6002 字,大约阅读时间需要 20 分钟。

18
4

I've got a fairly simple Spring Boot web application, I have a single HTML page with a form with enctype="multipart/form-data". I'm getting this error:

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

I'm using Spring Boot's default embedded tomcat server. Apparently the default maxPostSize value is 2 megabytes. Is there any way to edit this value? Doing so via application.properties would be best, rather than having to create customized beans or mess with xml files.

 
 
Whereever you have declared your multi-part resolver, you can change these things. –   
Oct 20 '15 at 11:22
 
I haven't declared it anywhere. I'm assuming that means spring boot is automatically creating and handling it. Does that mean I can't edit it? –   
Oct 20 '15 at 23:56
 
You can edit it. Find the multipart resolver and edit the value. If there is multipart support, I am sure you will find some configuration for it. You have not even posted your config in the main post, so no one can even point out what to change. –   
Oct 21 '15 at 7:04

4 Answers

10

In application.properties file write this:

# Max file size.spring.http.multipart.max-file-size=1Mb# Max request size.spring.http.multipart.max-request-size=10Mb

adjust size according to your need.

 
 
Tried that, still gave me errors. I'm not actually uploading any files in the form, I just have a lot of input fields with values tens of thousands of characters long, and if I have too much text (more than 2MB of text) it crashes. Was hoping to increase the postMaxSize to more than 2MB to avoid this problem. –   
Oct 21 '15 at 0:10 
 
can you please post your code and error stacktrace –   
Oct 21 '15 at 5:20
1  
The dashes should not be included in the property names. multipart.maxRequestSize=20MB multipart.maxFileSize=20MB –   
Mar 25 '16 at 20:30 
 
spring.http.multipart.max-file-size=1Mb # Max file size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size. spring.http.multipart.max-request-size=10Mb # Max request size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size. –   
Aug 25 '16 at 19:05
9
accepted

Found a solution. Add this code to the same class running SpringApplication.run.

// Set maxPostSize of embedded tomcat server to 10 megabytes (default is 2 MB, not large enough to support file uploads > 1.5 MB)@BeanEmbeddedServletContainerCustomizer containerCustomizer() throws Exception {    return (ConfigurableEmbeddedServletContainer container) -> {        if (container instanceof TomcatEmbeddedServletContainerFactory) {            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;            tomcat.addConnectorCustomizers(                (connector) -> {                    connector.setMaxPostSize(10000000); // 10 MB                }            );        }    };}

Edit: Apparently adding this to your application.properties file will also increase the maxPostSize, but I haven't tried it myself so I can't confirm.

multipart.maxFileSize=10Mb # Max file size.multipart.maxRequestSize=10Mb # Max request size.
 
 
adding the properties works for me: multipart.maxFileSize and multipart.maxRequestSize – 
Sep 21 '16 at 15:19
 
the connector solution didn't work for me, neither did the multipart.maxFileSize. What worked for me was spring.http.multipart.max-file-size from the answer below. –   
Sep 9 at 20:54
3

There is some difference when we define the properties in the application.properties and application yaml.

In application.yml :

spring:  http:    multipart:      max-file-size: 256KB      max-request-size: 256KB

And in application.propeties :

spring.http.multipart.max-file-size=128KB spring.http.multipart.max-request-size=128KB

Note : Spring version 4.3 and Spring boot 1.4

 

2

from documentation: 

Tuning file upload limits

When configuring file uploads, it is often useful to set limits on the size of files. Imagine trying to handle a 5GB file upload! With Spring Boot, we can tune its auto-configured MultipartConfigElement with some property settings.

Add the following properties to your existing src/main/resources/application.properties:

spring.http.multipart.max-file-size=128KB

spring.http.multipart.max-request-size=128KB

The multipart settings are constrained as follows:

  • spring.http.multipart.max-file-size is set to 128KB, meaning total file size cannot exceed 128KB.

  • spring.http.multipart.max-request-size is set to 128KB, meaning total request size for a multipart/form-data cannot exceed 128KB.

https://stackoverflow.com/questions/33232849/increase-http-post-maxpostsize-in-spring-boot

其它参考:

http://godjohnny.iteye.com/blog/2352626

http://www.91r.net/ask/33232849.html

这种方式是根据spring boot的EmbeddedServletContainerCustomizer 内嵌tomcat配置实现的

connector.setMaxPostSize(10000000); // 10 MB
,我的程序编译成war包,使用外部tomcat的,所以无法注入

顺便提一下:

spring.http.multipart.max-file-size=100Mbspring.http.multipart.max-request-size=1000Mb
框架层面(非tomcat层面)在springboot下并没有什么用,springboot中起控制作用的是:

multipart.maxFileSize=100Mbmultipart.maxRequestSize=1000Mb
http://blog.csdn.net/silyvin/article/details/70665377

那么然后自然就想到直接改tomcat的maxpostsize参数,但是动作太大,姑且把这种方法搁置

分析一下情况,tomcat默认2M的maxPostSize,h5 ajax一直可以正常使用,安卓也可以,为什么?

查到:maxPostSize参数只有当request的Content-Type为“application/x-www-form-urlencoded”时起作用。

参考:http://blog.csdn.net/lafengwnagzi/article/details/72846195

As can be seen in , maxPostSize is taken into account only for the "application/x-www-form-urlencoded" content type and is not affected by how the request is made ("normal" vs. xhr).

https://stackoverflow.com/questions/7696197/tomcat-maxpostsize-value-ignored-with-xmlhttprequest

于是我找到h5

使用

安卓也显式设置 maltipart/form-data,

猜测ios的网络库可能作了些调整

于是找到ios,调试下来发现也是 maltipart/form-data,算了直接修改tomcat 的 maxPostSize吧(默认2M,修改为-1即可,tomcat8之后,0不行了),就这样了

ios使用的网络库为anf

你可能感兴趣的文章
pixhawk也可以用Airsim仿真
查看>>
《无人机电机与电调技术》可以看看
查看>>
我发现七月在线的GAAS课程基本都讲到了
查看>>
电机堵转
查看>>
一个真正好的无人机应该是需要自己慢慢去调参的,别人的默认参数是可以飞但是可能达不到perfect的效果。
查看>>
carzepony也在想往FreeRTOS上迁移
查看>>
可以买个好点的电烙铁
查看>>
ACfly调参记录(包括ACfly-F330和ACfly-T265)
查看>>
一定记得每飞几次或者隔一天要把螺丝和浆帽拧一次,确实会松的
查看>>
《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架
查看>>
我感觉无人机借助于激光雷达实现定点悬停的效果应该好于光流才是
查看>>
思岚A1的SDK其实很好读懂,每个函数清晰明了,可以直接调用
查看>>
六角铜柱的型号
查看>>
pixhawk无GPS时可以在定高或者自稳模式下解锁起飞(见过多次别人说到)
查看>>
pixhawk(PX4)的一些论坛网站(包括中文版的PX4用户手册和PX4开发手册)
查看>>
串级 PID 为什么外环输出是内环的期望?(和我之前对串级PID的总结一样)
查看>>
APM/Pixhawk飞行日志分析入门(苍穹四轴)
查看>>
我刚刚才完全清楚GPS模块的那根杆子是怎么固定安装好的
查看>>
去github里面找找也没有别人无人机+SLAM的工程
查看>>
PX4与ROS关系以及仿真控制(键盘控制无人机)
查看>>