struts2在上传时控制文件大小时错误

2008-8-2823:37:57org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequestparse... 2008-8-28 23:37:57 org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest parse
严重: org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (2164310) exceeds the configured maximum (2097152)
2008-8-28 23:37:57 org.apache.struts2.interceptor.FileUploadInterceptor intercept
严重: the request was rejected because its size (2164310) exceeds the configured maximum (2097152)
2008-8-28 23:37:57 org.apache.struts2.interceptor.FileUploadInterceptor intercept
严重: the request was rejected because its size (2164310) exceeds the configured maximum (2097152)

struts2在上传时控制文件大小时错误,但文件类型可以控制,请问这是什么原因
展开
 我来答
archyly
2013-04-16 · TA获得超过1318个赞
知道小有建树答主
回答量:389
采纳率:50%
帮助的人:429万
展开全部

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (2164310) exceeds the configured maximum (2097152)

日志显示上传文件大于配置文件许可的大小,所有抛出了异常。

Struts2框架底层默认用的是apache的commons-fileupload组件对上传文件进行处理。

struts.multipart.maxSize设置的大小就是该处理时取用的值,在上传文件之前系统会去比较文件的大小是否超过了该值,如果超过将抛出上述异常,并且commons-fileupload组件是不支持国际化的,所以我们看到的异常都是默认的。

你可以查看上传组件的源码,他的异常是Action级别的。

所以如果你还想用这种方法进行异常处理的话,可以这么做:

在action中直接重写ActionSupport的addActionError()方法

判断字符串是不是the request was rejected because its size 这样的字符串。

示例代码:

@Override
public void addActionError(String anErrorMessage) {
//判断是否是文件上传超过限制大小异常
if (anErrorMessage.startsWith("the request was rejected because its size")) {
super.addActionError("你上传的文件大小超过允许的大小!");

} else {
//如果不是文件上传大小异常则按原来的方法处理
super.addActionError(anErrorMessage);
}
}

页面加上个<s:fielderror/> 

ok了。

需要注意的是,原来页面上的其他输入信息都会消失不见。

因为此异常是在上传前捕获的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式