Struts中the request was rejected because its size (***) exceeds the configured maximum (2097152)



Struts中the request was rejected because its size (***) exceeds the configured maximum (2097152)

这是为什么呢?

这是因为在利用struts中在上传文件的时候,struts的jar包(commons-fileupload)中默认了文件上传的最大值是2097152.所以当你传的文件大小大于这个值的时候就出现了这个错误!

解决办法!

1,我们可以在action中直接重写ActionSupport的addActionError()方法

  1. public void addActionError(String anErrorMessage) {
  2. //这里要先判断一下,是我们要替换的错误,才处理  
  3.    if (anErrorMessage.startsWith(“the request was rejected because its size”)) {
  4.      Matcher m = Pattern.compile(“//d+”).matcher(anErrorMessage);
  5.     String s1 = “”;
  6.     if (m.find())   s1 = m.group();
  7.     String s2 = “”;
  8.     if (m.find())   s2 = m.group();
  9.     //偷梁换柱,将信息替换掉  
  10.      super.addActionError(“你上传的文件大小(” + s1 + “)超过允许的大小(” + s2 + “)”);
  11.     //也可以改为在Field级别的错误
  12.     // super.addFieldError(“file”,”你上传的文件大小(” + s1 + “)超过允许的大小(” + s2 + “)”);  
  13.   } else {//否则按原来的方法处理 
  14.      super.addActionError(anErrorMessage);
  15. }

这样上传不会出现异常,但是还是没有上传成功!

2.修改上传的最大上限

<interceptor-ref name=”fileUpload”>    <param name=”maximumSize”>1000000</param>  </interceptor-ref>

和上面的方法不一样的是:这个方法不是去除异常,而是在你自己设定的范围内不会出现异常!

http://blog.163.com/guomaolin_gavin/blog/static/1996183072011102874211629/