今天遇到一例文件上传失败,研发的同窗说代码那边没有问题,应该是Tomcat或者Nginx的配置中限制了HttpPost的大小。因而我app
Nginx中限制请求大小的地方是以下的client_max_body_size,咱们图方便,直接分3000m,应该足矣:post
location /app { proxy_pass http://server_name; client_max_body_size 3000m; access_log off; }
Tomcat则是在server.xml中的connector元素中添加:maxPostSize=” ” ;“ ”中填你须要限制到的大小,如“0”为不限制。缺省这个参数,就会是2m. 因此应该是这里出了问题。因而我添加一行maxPostSize=”0″:server
<Connector port="8038" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8028" URIEncoding="UTF-8" maxThreads="1000" maxPostSize="0" minSpareThreads="25" maxSpareThreads="75" acceptCount="200" />
我会告诉你这样改完没有效果吗。上传仍是失败。xml
由于HttpPost不只是大小会限制,还会有时间限制。虽然你能够上传了,但你在connectionTimeout的限制时间内不能传完,链接也会断开的。blog
因此再将它修改以下,原先的connectionTimeout时间是“20000”,可是注意,单位是毫秒啊……因而我把它加到”2000000“,有半小时以上,足矣吧:get
<Connector port="8038" protocol="HTTP/1.1" connectionTimeout="2000000" redirectPort="8028" URIEncoding="UTF-8" maxThreads="1000" maxPostSize="0" minSpareThreads="25" maxSpareThreads="75" acceptCount="200" />
实测成功。文件上传
This entry was posted in asiter on 2013 年 11 月 25 日 by aliao.it