当用POST方式上传文件,转成base64格式的数据太大,导致后台接收的任何数据都为NULL

需要明确: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"/>

发布了23 篇原创文章 · 获赞 1 · 访问量 1637

猜你喜欢

转载自blog.csdn.net/weixin_43978412/article/details/102835578