大文件上传失败缘由之:Tomcat HttpPost超过大小和超时

今天遇到一例文件上传失败,研发的同窗说代码那边没有问题,应该是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

相关文章
相关标签/搜索