`
rockydang
  • 浏览: 30944 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2大文件上传错误处理

阅读更多

问题描述:前段时间在struts2下做文件上传,当上传大文件时出现了几个问题。

 

问题1:当有大文件上传时,即超过struts2配置的最大值时会报出一段英文的出错信息, "the request was rejected because its size ..."

 

问题2: 由于错误的产生,原来页面上输入的内容也全部不见了,也就是说参数(params)注入失败。

 

解决方法:解决第一个问题的方法挺多,现只列举最简便的方法。

               解决方案1:  解决方法在上传文件的的action加入对addActionError方法的重写,代码如下:

               

/**
	 * 替换文件上传中出现的错误信息 引用 import java.util.regex.Matcher; import
	 * java.util.regex.Pattern;
	 * 
	 */
	@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 + ")");
			// 也可以改为在Field级别的错误
			// super.addFieldError("file","你上传的文件大小(" + s1 + ")超过允许的大小(" + s2 +
			// ")");
		} else {// 否则按原来的方法处理
			super.addActionError(anErrorMessage);
		}
	}

     这种解决方法的弊病是,无法将问题2来解决,下面推荐解决方案2。

     解决方案2:  将struts2的默认上传文件大小调大,在struts.xml中加入

<constant name="struts.multipart.maxSize" value="10000000" />,这样整个系统中的上传大小最大都为 10000000byte了,但是如果超过了这个大小还是出现上述问题,所以最好能设置一个超大数(汗)。然后在上传的action中设置上传文件的大小小于10000000,这样就能按照你的方式来处理了。

   

 if (file != null) {
                                      if(file.length() <= 2097152)  //大于2M 2M= 2*1024*1024
                                       { 

                                            .....

                                             ....

                                      }

                                }

 

分享到:
评论
1 楼 chuyuan_china 2014-01-07  
方案二确实很奇葩。我的是在 spring 的bean文件里 加 scope="prototype"属性。
<bean id="certificateAction" class="com.qh.client.action.CertificateAction" scope="prototype">

相关推荐

    struts2文件上传下载源代码

    总之,Struts2文件上传和下载是Web开发中必不可少的功能,涉及的技术点包括表单处理、文件流操作、服务器配置以及错误处理。通过理解和实践提供的源代码,开发者可以加深对Struts2框架的理解,提升其在实际项目中的...

    swfuplaod+struts2实现多文件上传

    结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...

    struts2 实现文件批量上传

    1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...

    struts2上传文件源代码

    6. **错误处理**:文件上传可能会出现各种问题,例如文件过大、文件类型不合法等。因此,我们需要在Action中处理这些异常情况,返回相应的错误信息给用户。 7. **结果映射**:根据Action的执行结果,Struts2将决定...

    struts2框架下的文件上传

    - 错误处理:确保捕获并处理可能出现的异常,如文件过大、格式错误等。 - 文件存储位置:确定服务器上的存储路径,避免文件覆盖或权限问题。 - 文件清理:对于Copy模式,Struts2会自动清理临时文件,但其他模式可能...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    Struts2实现文件上传

    Struts2是一个强大的MVC框架,广泛应用于Java Web开发中,尤其在处理用户表单提交和文件上传等交互场景中表现出色。在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的...

    struts2多文件的上传

    这可以通过添加`&lt;constant&gt;`标签来设置`struts.multipart.parser`为jakarta,这是Struts2推荐的多部分解析器,以支持大文件上传。同时,设置`struts.multipart.maxSize`属性,限制上传文件的大小。 ```xml ...

    struts2文件上传例子(支持大文件)

    在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...

    JavaEE Struts文件上传

    JavaEE Struts 文件上传是Web开发中的一个常见需求,它允许用户从客户端向服务器传输文件。Struts作为JavaEE框架的一部分,提供了强大的功能来处理这种交互。以下是对这个主题的详细解析。 首先,理解文件上传的...

    Struts2文件上传源码

    5. **错误处理与验证**: Struts2允许在Action中进行字段验证,如果上传过程中出现问题,可以通过`addFieldError`方法添加错误信息,然后返回错误的结果代码,如`INPUT`,让用户重新上传。 6. **源码分析**: 要深入...

    struts2文件上传源码和步骤

    Struts2 是一个基于 MVC 设计模式的 Java Web 开发框架,它使得创建结构清晰、易于维护的 Web 应用程序变得更加简单。...在实际开发中,可能还需要考虑更多细节,如多文件上传、文件重命名策略、错误处理等。

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

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

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

    实现struts2的文件上传文件功能

    Struts2是一个非常流行的Java Web框架,用于构建可维护、可扩展且易于开发的企业级应用程序。...这个过程涉及到了Web开发中的前端交互、后端处理和错误处理等多个方面,是理解Struts2框架和Web应用开发的重要实践。

    struts2文件上传的两种方法

    - 错误处理:处理文件上传失败的情况,如文件过大、格式不正确等,提供友好的错误提示。 以上就是Struts2中单文件和多文件上传的基本实现方式及相关知识点。通过这种方式,开发者能够方便地处理用户上传的文件,...

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    struts2 单文件,多文件上传及拦截器实现异常处理

    在文件上传方面,Struts2提供了方便的API和配置方式来处理单个或多个文件的上传。在这个主题中,我们将深入探讨Struts2如何实现单文件和多文件上传,并通过拦截器来处理可能出现的异常。 首先,我们来看单文件上传...

    简单易懂的struts2文件上传

    在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...

Global site tag (gtag.js) - Google Analytics