`
zhouchaofei2010
  • 浏览: 1103092 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

Action:

/**  
	    * 当上传文件大小大于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:

 

<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>      
    <body>      
      <!--fielderror-->      
     <s:if test="hasFieldErrors()">      
         <s:iterator value="fieldErrors">     
             <s:iterator value="value" status="statu">      
                <!-- //field的错误消息是List 因此还需要迭代一次 -->          
                 <s:set name="index" value="#statu.index"/>      
                 <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前缀未去掉   -- > 
              </s:iterator>      
         </s:iterator>    
     </s:if>      
     
         <!--actionerror      -->
     <s:if test="hasActionErrors()">      
         <s:iterator value="actionErrors">      
                <script   language="JavaScript">      
                 alert("<s:property escape="false"/>")      
                </script>      
             </s:iterator>      
     </s:if>      
     
         <!--  actionmessage      -->
     <s:if test="hasActionMessages()">      
         <s:iterator value="actionMessages">  
              <script>      
                 alert("<s:property escape="false"/>")      
             </script>      
         </s:iterator>      
      </s:if>      
     
      <!-- 打印转换好格式的fielderror信息      -->
     <s:if test="#msg.length()>0">      
         <script language="JavaScript">      
            // alert('<s:property escape="false" value="#msg"/>')  
             alert("可能资金格式不是数字,请确认!");  
         </script>      
     </s:if>  
        <script language="JavaScript">      
          history.back();     
         </script>        
     </body>      
</html>

 

struts2.xml actionl配置:

 

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

 

全局大小配置:

struts.xml

 

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

分享到:
评论

相关推荐

    struts2 上传文件超过最大值解决办法

    当上传的文件大小超过这个限制时,Struts2会阻止文件上传,并返回一个错误消息,指出请求被拒绝是因为其大小超过了允许的最大值。 ### 解决方案:调整`struts.multipart.maxSize` 要解决这个问题,最直接的方法是...

    struts多附件上传

    2. 创建Action类:编写一个处理文件上传的Action类,该类需要继承自Struts的ActionSupport,并重写execute方法。在这个方法中,使用FileUpload库解析请求,获取上传的文件信息。 3. 配置Action:在struts-config.xml...

    struts文件上传大小限制问题

    - Struts 2提供了一个名为`Struts2-FileUpload-plugin`的插件,它可以方便地处理文件上传,并且支持自定义文件大小限制。 5. **安全考虑**: - 不限制文件大小可能会导致DoS攻击,因此,即使服务器和容器未设定...

    struts2图片上传并预览

    Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2文件上传,文件大小设置

    综上所述,Struts2文件上传功能的大小设置主要通过配置`FileUploadInterceptor`来实现,结合拦截器栈和Action配置,可以灵活地控制文件上传的大小限制,并提供友好的错误处理。在实际开发中,确保正确配置这些参数,...

    struts 附件上传 仿照163样式 实例

    在Struts1中,通常使用`org.apache.struts.upload.FormFile`来处理文件上传,而在Struts2中,我们可以使用`org.apache.struts2.views.util.URLBuilder`和`org.apache.struts2.components.File`等类。这个实例可能...

    struts+spring文件上传大小限制.rar

    本压缩包"struts+spring文件上传大小限制.rar"显然是针对在Struts和Spring整合环境下,如何处理文件上传时的大小限制问题。以下将详细介绍这两个框架在文件上传时的处理机制以及如何设置文件大小限制。 1. Struts...

    struts2文件上传下载

    Struts2作为一个成熟的MVC框架,提供了简单的API和标记库来处理文件上传下载的业务逻辑。下面是基于给定文件内容的知识点详细说明。 ### Struts2文件上传知识点 1. **Struts2的form标签配置** 在Struts2中进行...

    struts2实现文件上传下载

    在`struts.xml`配置文件中,为需要支持文件上传的Action添加`params`和`fileUpload`拦截器,并设置允许的最大上传大小。例如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; ...

    struts2文件上传jar

    2. **上传组件**:Struts2使用Apache Commons FileUpload库来处理文件上传。这个库负责解析请求中的多部分数据,将文件内容分离出来。`commons-fileupload.jar` 是这个库的实现,它包含了处理文件上传的基本类和接口...

    Struts2文件上传的大小限制问题

    Struts2框架通过配置文件(如struts.xml或struts.properties)来控制文件上传的最大大小。开发者可以指定一个全局的限制,也可以针对每个表单或特定字段设定单独的限制。 在Struts2中,可以通过以下几种方式设置...

    struts2 文件上传

    struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload

    struts2 图片上传,图片大小,图片格式

    在本项目中,我们关注的是Struts2中的图片上传功能,以及如何处理图片的大小和格式问题。这个压缩包包含了实现这些功能所需的jar文件和其他资源,例如TestUpload_Struts2项目。 首先,图片上传是Web应用中常见的...

    struts2文件上传

    在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将详细讨论这个主题。 首先,我们来看配置拦截器的部分。在Struts2中,`struts.xml`是配置文件,...

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    Struts2之struts2文件上传详解案例struts011

    为了支持文件上传,我们需要创建一个继承自`org.apache.struts2.dispatcher.multipart.MultiPartRequest`的Action类,或者使用Struts2提供的`org.apache.struts2.views.util.DefaultMultiPartRequest`。这个类可以...

    swfuplaod+struts2实现多文件上传

    3. **创建Struts2 Action**:在Struts2框架中,创建一个处理文件上传的Action类,该类通常会包含一个`List&lt;HttpServletFileWrapper&gt;`类型的属性,用于接收上传的文件。 4. **编写Struts2配置**:在struts.xml配置...

    struts2 zip 上传下载

    在处理文件上传时,可能会遇到各种错误,如文件大小超过限制、文件类型不被允许、文件读取或写入失败等。原先的代码可能没有针对这些情况进行有效的错误处理和反馈。改进的方式是,在尝试操作文件时,使用try-catch...

    struts2异步上传

    Struts2是一个非常流行的... Struts2异步上传结合了Struts2框架、jQuery、Ajax、JSON插件和文件处理策略,为用户提供了无刷新的文件上传体验。理解并熟练掌握这些组件和技术,对于开发高效、安全的Web应用至关重要。

Global site tag (gtag.js) - Google Analytics