关于“Tomcat Post”限制
最近做项目,项目中上传文件,用的是 Html5 FileReader.readAsDataURL(file);读完后存储到form表单的隐藏域中。点击提交表单时,把form表单中的数据提交到后台,后台处理保存文件。
问题是:刚开始上传PDF文件,上传1个(大概500K),其他几个比他稍微大。选择3个上传可以,选择4个上传后,后台发现传递的参数丢失。但上传4个jpg格式,不丢失。疑惑。刚开始以为是把保存到隐藏域时,丢失数据导致的。耗费几乎1天时间查找参数丢失问题。
弯路1: 刚开始以为input域存储有限制。考虑这块,用了半天,计划用<textarea>代替。发现代替后还是有问题。另外当时确实发现把流存储到拼接的隐藏域中,发现隐藏域会丢失</>。这块是迷惑点。以为流中有特殊字符导致的。这块引入死角。
最后通过发现若隐藏域不传流,传文件名可以上传。确定是上传文件太大导致的。
具体解决办法是查找相关资料发现,我用的web 服务器是tomcat. tomcat默认post提交时,限制大小为2M.若大于2M则参数丢失。最后修改 tomcat/conf/server.xml中添加maxPostSize="0"(设置为 0表示不受限制,)。
如:修改前为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改后为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxPostSize="0"
redirectPort="8443" />
tomcat默认大小限制:
tomcat默认的post大小限制
执行大文件上传,或者,大数据量提交时,当提交的数据大小超过一定限制时,发现后台从request取值的代码request.getParameter("message")返回值为null,原因是因为服务器对于提交的post请求的大小有一定的限制
tomcat:默认大小2097152,当maxPostSize=0时,不限制;maxPostSize=2097152时,为2M。

浙公网安备 33010602011771号