需要明确:POST请求是没有大小限制的,但如果是tomcat服务器,则默认对post请求有了大小限制,默认为2MB。
问题发现:今天在做项目的时候,需要同个表单上传两张图片,第一次测试的时候,正好选择了两张大小小于500KB的图片,整个表单加起来没超过2MB,就成了。当我做其他模块,整个完成之后再来过一遍流程的时候,发现就出问题了。弄了一下午,最后决定还是还原最初的状态,来一步一步测试。最后发现一个现状,即上传图片选择之前两张的时候,可以上传,选择其他组合,有些可以,有些后台则直接报NULL。因此查看图片大小,发现,后来选择的图片,大小都超过800KB,因此怀疑是表单数据过大,tomcat对post请求大小限制起了作用。
解决问题:
在Tomcat的conf目录下的server.xml中找到如下代码:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
然后要设置成对post表单不做限制或把限制放大。
注意:Tomcat的版小于或等于7,设置maxPostSize=“0” 表示不作任何限制。
Tomcat的版本大于或等于8,设置maxPostSize=“104857600” 表示限制post参数最大为100MB。
我是Tomcat 9,因此配置如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="104857600"/>