struts2附件上传,大小超过最大值处理

7 篇文章 0 订阅

Action:

Java代码 复制代码  收藏代码
  1. /**    
  2.         * 当上传文件大小大于struts.multipart.maxSize提示时,    
  3.         * 客户端会出现如下错误:    
  4.         * "the request was rejected because its size (4501994)     
  5.         * exceeds the configured maximum (2097152)"。    
  6.         * 此信息在commons-fileupload.jar,    
  7.         * org.apache.commons.fileupload.FileUploadBase源代码中第904行。    
  8.         *     
  9.         * 重写addActionError()以替换默认信息。     
  10.         */     
  11.        @Override     
  12.        public void addActionError(String anErrorMessage) {      
  13.            //这里要先判断一下,是我们要替换的错误,才处理      
  14.             if (anErrorMessage.startsWith("the request was rejected because its size")) {      
  15.                           //这些只是将原信息中的文件大小提取出来。      
  16.                 Matcher m = Pattern.compile("\\d+").matcher(anErrorMessage);      
  17.                 String s1 = "";      
  18.                 if (m.find())   s1 = m.group();      
  19.                 String s2 = "";      
  20.                 if (m.find())   s2 = m.group();      
  21.                            //偷梁换柱,将信息替换掉      
  22.               // super.addActionError("你上传的文件(" + s1 + ")超过允许的大小(" + s2 + ")");    
  23.                 super.addActionError("您上传的附件过大,请确保单次所上传的附件大小总和没有超过20兆!");    
  24.                 isExceedMaximum=true;   
  25.             } else {//不是则不管它      
  26.                 super.addActionError(anErrorMessage);      
  27.             }      
  28.   
  29.        }    
/**  
	    * 当上传文件大小大于struts.multipart.maxSize提示时,  
	    * 客户端会出现如下错误:  
	    * "the request was rejected because its size (4501994)   
	    * exceeds the configured maximum (2097152)"。  
	    * 此信息在commons-fileupload.jar,  
	    * org.apache.commons.fileupload.FileUploadBase源代码中第904行。  
	    *   
	    * 重写addActionError()以替换默认信息。   
	    */  
	   @Override  
	   public void addActionError(String anErrorMessage) {   
		   //这里要先判断一下,是我们要替换的错误,才处理   
		    if (anErrorMessage.startsWith("the request was rejected because its size")) {   
		                  //这些只是将原信息中的文件大小提取出来。   
		        Matcher m = Pattern.compile("\\d+").matcher(anErrorMessage);   
		        String s1 = "";   
		        if (m.find())   s1 = m.group();   
		        String s2 = "";   
		        if (m.find())   s2 = m.group();   
		                   //偷梁换柱,将信息替换掉   
		      // super.addActionError("你上传的文件(" + s1 + ")超过允许的大小(" + s2 + ")"); 
		        super.addActionError("您上传的附件过大,请确保单次所上传的附件大小总和没有超过20兆!"); 
		        isExceedMaximum=true;
		    } else {//不是则不管它   
		        super.addActionError(anErrorMessage);   
		    }   

	   }  

 

jsp:

 

Jsp代码 复制代码  收藏代码
  1. <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>   
  2. <%@taglib uri="/struts-tags" prefix="s"%>   
  3. <html>         
  4.     <body>         
  5.       <!--fielderror-->         
  6.      <s:if test="hasFieldErrors()">         
  7.          <s:iterator value="fieldErrors">        
  8.              <s:iterator value="value" status="statu">         
  9.                 <!-- //field的错误消息是List 因此还需要迭代一次 -->             
  10.                  <s:set name="index" value="#statu.index"/>         
  11.                  <s:set name="msg"  value="#msg+value.get(#request.index).toString()==null||#msg+value.get(#request.index).toString()=='null'?'':#msg+value.get(#request.index).toString()+'\\\n'"/><!-- 关键代码 不过开始时有null前缀未去掉   -- >    
  12.               </s:iterator>         
  13.          </s:iterator>       
  14.      </s:if>         
  15.         
  16.          <!--actionerror      -->   
  17.      <s:if test="hasActionErrors()">         
  18.          <s:iterator value="actionErrors">         
  19.                 <script   language="JavaScript">         
  20.                  alert("<s:property escape="false"/>")         
  21.                 </script>         
  22.              </s:iterator>         
  23.      </s:if>         
  24.         
  25.          <!--  actionmessage      -->   
  26.      <s:if test="hasActionMessages()">         
  27.          <s:iterator value="actionMessages">     
  28.               <script>         
  29.                  alert("<s:property escape="false"/>")         
  30.              </script>         
  31.          </s:iterator>         
  32.       </s:if>         
  33.         
  34.       <!-- 打印转换好格式的fielderror信息      -->   
  35.      <s:if test="#msg.length()>0">         
  36.          <script language="JavaScript">         
  37.             // alert('<s:property escape="false" value="#msg"/>')     
  38.              alert("可能资金格式不是数字,请确认!");     
  39.          </script>         
  40.      </s:if>     
  41.         <script language="JavaScript">         
  42.           history.back();        
  43.          </script>           
  44.      </body>         
  45. </html>  

 

struts2.xml actionl配置:

 

如果action中默认的拦截器栈包含fileupload拦截器,就不要另外配置。如myStack,defaultStack。否则addActionError()会多执行一次,页面“您上传的附件过大,请确保单次所上传的附件大小总和没有超过20兆!"的提示会alert2次;

 

全局大小配置:

struts.xml

 

<constant name= "struts.multipart.maxSize" value="20971520" />

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值