struts2上传文件过大问题的处理
2011-07-28 17:22
495 查看
问题描述:前段时间在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中设置f上传文件的大小小于10000000,这样就能按照你的方式来处理了。
if (file != null) {
if(file.length() <= 2097152) //大于2M 2M= 2*1024*1024
{
.....
....
}
}
问题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中设置f上传文件的大小小于10000000,这样就能按照你的方式来处理了。
if (file != null) {
if(file.length() <= 2097152) //大于2M 2M= 2*1024*1024
{
.....
....
}
}
相关文章推荐
- struts2处理上传文件路径问题
- Struts2中文件过大上传失败问题解决方案
- Struts2中文件过大上传失败问题解决方案
- struts2处理上传文件路径问题
- Struts2中文件过大上传失败问题解决方案org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException
- 关于struts2上传时报临时文件找不到的问题
- struts2上传文件后 return SUCCESS失败的处理方法!
- Java struts2(1)--文件上传大小限制问题
- struts2文件上传类型和大小提示信息问题
- 关于struts2使用xml拦截器(interceptor)限制文件上传(fileUpload)大小和类型的问题,道友看一看
- Struts2-day03 文件上传, json格式 , 处理ajax请求 , 注解开发
- Struts2文件上传的大小限制问题
- (Struts2学习篇) Struts2文件处理之文件上传
- struts2文件上传大小限制问题小结
- 处理GitHub不允许上传大于100M文件问题
- struts2 文件上传相关问题剖析
- Struts2文件上传与下载中的中文乱码问题解决方案
- 关于在用struts2上传文件之后,会产生临时文件的问题
- java中Struts2文件上传问题详解
- Struts2文件上传完美解决中文乱码问题