最近有在上传图片时候遇到一个问题,就是拦截器在拦截图片大小的时候,总是出现莫名的错误,那个提示错误的总是有时出来,有时候不出来,我在前台js进行图片的验证,但是感觉这样好像还行,因为前台验证的话既有浏览器不兼容的问题,而且错误提示也很不友好,于是以为是哪里配置错了,但是检查很多次都没发现什么问题,发现struts2内置的fileUpload拦截器,总是用着不舒服,看了拦截器FileUploadInterceptor.java的源代码,还是不明白,百度、Google了许久,终于找到了,弄明白了原因之所在,由于common-fileupload组件默认最大支持上传文件的大小为2M,而我在测试上传图片的时候,有的大于2M,有的小于2M,当上传大于2M的文件时,就会出现org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException异常。而我在控制台上并没有打印出这个异常,这个异常的发生导致了fileUpload拦截器没有机会执行,所以在上传2M以上的图片时,页面只是一闪而过,仍然停留在之前定义的input页面,什么错误提示都没,
解决方法 在struts.xml 的struts标签 里面添加
<constant name="struts.multipart.maxSize" value="10485760"/>
把限制上传文件的大小定义的大一些,问题就解决了