问题:项目之前的上传功能是没有问题的,但是今天同样的代码上传一个压缩包的时候出现了问题,报的是struts.xml的错,说是找不到返回的映射,
问题截图:
很奇怪的问题,之前都没问题的,仔细对比后发现这次上传的文件比较大有13M。因此就往这方面找解决办法了。
在网上找方法搜索“tomcat上传大文件”关键词,都是说修改tomcat的server.xml的maxPostSize
为小于等0的数就不会限制上传文件大小,这期间又有个坑,就是如果你的tomcat版本小于7.0.63那设置的maxPostSize
<=0就可以,但是如果你的tomcat>=7.0.63 maxPostSize
只能是小于0的数(参考),我之前就没注意这个,改了之后报MD5加密空指针的错。。。=_=||
如下:
有博客说还要配合enctype使用 ,但是如果enctype设置成application/x-www-form-urlencoded,就不能上传文件了啊。。。。。form表单的参数就会以?xxx=xx&xxx=xxx这样的方式传递。。无果
设置了maxPostSize还是没用,还是报struts.xml的那个错。。。我晕,搞到大半夜,到了第二天早上,来的时候,就想会不会真的是struts.xml配置文件的锅。。。于是就开始看,果然发现了这个东西!!尼玛。。。
于是设置成了20M:
<constant name="struts.multipart.maxSize" value="20971520" />
再次上传果然没问题了,于是将tomcat的maxPostSize属性去掉居然也可以。。。