2011-10-08 31 views
1

我正在開發一個與Spring 3和jQuery的Web應用程序,我正在使用ajax上傳腳本將文件發送到服務器(Tomcat 7.0.22)。將文件發佈到服務器,其內容類型爲application/octet-stream ,服務器將其解析爲字節數組。不過,儘管我已經明確地在tomcat配置中設置了maxpostsize的值爲2097152,但此設置似乎完全沒有效果。例如,我可以上傳足夠大(> 1 GB)的文件(本地)來使服務器崩潰(內存不足)。以下是螢火蟲的請求頭:使用XMLHttpRequest忽略Tomcat maxpostsize值?

Host localhost:8080 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip, deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection keep-alive 
X-Requested-With XMLHttpRequest 
X-File-Name some-pdf.pdf 
Content-Type application/octet-stream 
Referer http://localhost:8080/myapp/ 
Content-Length 9369597 
Cookie JSESSIONID=F237BA8176D158A297BAFA7F57A98A5F; 
Pragma no-cache 
Cache-Control no-cache 

這裏是Tomcat的連接器配置

<Service name="Catalina"> 

<Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" 
      maxPostSize="2097152"/> 

回答

4

儘管這是一個老問題:

如可以在Request.java可以看出,maxPostSize被納入只考慮「application/x-www-form-urlencoded」內容類型,並且不受請求方式(「正常」與xhr)的影響。