2011-10-08 59 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)的影响。