今天遇到一例文件上傳失敗,研發的同窗說代碼那邊沒有問題,應該是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