问题描述:前段时间在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
{
.....
....
}
}
分享到:
相关推荐
总之,Struts2文件上传和下载是Web开发中必不可少的功能,涉及的技术点包括表单处理、文件流操作、服务器配置以及错误处理。通过理解和实践提供的源代码,开发者可以加深对Struts2框架的理解,提升其在实际项目中的...
结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...
1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...
6. **错误处理**:文件上传可能会出现各种问题,例如文件过大、文件类型不合法等。因此,我们需要在Action中处理这些异常情况,返回相应的错误信息给用户。 7. **结果映射**:根据Action的执行结果,Struts2将决定...
- 错误处理:确保捕获并处理可能出现的异常,如文件过大、格式错误等。 - 文件存储位置:确定服务器上的存储路径,避免文件覆盖或权限问题。 - 文件清理:对于Copy模式,Struts2会自动清理临时文件,但其他模式可能...
这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...
Struts2是一个强大的MVC框架,广泛应用于Java Web开发中,尤其在处理用户表单提交和文件上传等交互场景中表现出色。在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的...
这可以通过添加`<constant>`标签来设置`struts.multipart.parser`为jakarta,这是Struts2推荐的多部分解析器,以支持大文件上传。同时,设置`struts.multipart.maxSize`属性,限制上传文件的大小。 ```xml ...
在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...
JavaEE Struts 文件上传是Web开发中的一个常见需求,它允许用户从客户端向服务器传输文件。Struts作为JavaEE框架的一部分,提供了强大的功能来处理这种交互。以下是对这个主题的详细解析。 首先,理解文件上传的...
5. **错误处理与验证**: Struts2允许在Action中进行字段验证,如果上传过程中出现问题,可以通过`addFieldError`方法添加错误信息,然后返回错误的结果代码,如`INPUT`,让用户重新上传。 6. **源码分析**: 要深入...
Struts2 是一个基于 MVC 设计模式的 Java Web 开发框架,它使得创建结构清晰、易于维护的 Web 应用程序变得更加简单。...在实际开发中,可能还需要考虑更多细节,如多文件上传、文件重命名策略、错误处理等。
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
综上所述,Struts2文件上传功能的大小设置主要通过配置`FileUploadInterceptor`来实现,结合拦截器栈和Action配置,可以灵活地控制文件上传的大小限制,并提供友好的错误处理。在实际开发中,确保正确配置这些参数,...
Struts2是一个非常流行的Java Web框架,用于构建可维护、可扩展且易于开发的企业级应用程序。...这个过程涉及到了Web开发中的前端交互、后端处理和错误处理等多个方面,是理解Struts2框架和Web应用开发的重要实践。
- 错误处理:处理文件上传失败的情况,如文件过大、格式不正确等,提供友好的错误提示。 以上就是Struts2中单文件和多文件上传的基本实现方式及相关知识点。通过这种方式,开发者能够方便地处理用户上传的文件,...
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
在文件上传方面,Struts2提供了方便的API和配置方式来处理单个或多个文件的上传。在这个主题中,我们将深入探讨Struts2如何实现单文件和多文件上传,并通过拦截器来处理可能出现的异常。 首先,我们来看单文件上传...
在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...