`
youanyyou
  • 浏览: 192751 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

org.apache.commons.fileupload.FileUploadBase$SizeL

阅读更多

在上传94M的视频出现异常如下:

[@APPNAME@] ERROR [http-80-3] MultiPartRequest.parse(130) |

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected

because its size (102147245) exceeds the configured maximum (50097152)

[@APPNAME@] ERROR [http-80-3] FileUploadInterceptor.intercept(227) | the request was rejected

because its size (102147245) exceeds the configured maximum (50097152)

 

解析:这个最大值是在struts2的源文件“struts2-core-2.0.11.1.jar\org\apache\struts\

default.properties”中的struts.multipart.maxSize=2097152语句,如果想改大的话,就重新设定它,有两种

方法:

一种是重写:struts.properties文件。

二是在struts.xml中加入常量来改变它如“ Java代码
<constant name="struts.multipart.maxSize" value="10000000" />

当然了,也有struts2的拦截器可以限制文件的类型、大小等,但是当上传文件大小2M后,这个拦截器就不起作用

了,只用小于2M(默认大小)的时候才起作用。那是因为:common-fileupload组件默认最大支持上传文件的大小

为2M,当我们上传大于2M的文件时,就会出现上面所说的异常。是这个异常的发生导致了fileUpload拦截器没有机

会执行,所以看到的是页面没有任何变化,也没有任何提示信息,只是在控制台打印出了上面的那些上传文件过

大的异常。

 

 

我解决问题的过程:

 

刚开始只是在struts.xml文件最上部加入

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

但还是报同样的错误。


接着查看struts.properties文件里的配置为:

### Load custom default resource bundles

struts.custom.i18n.resources=MessageResource

struts.multipart.maxSize=50097152

 

### character encoding

struts.i18n.encoding=GBK

 

修改为

### Load custom default resource bundles

struts.custom.i18n.resources=MessageResource

struts.multipart.maxSize=1000000000

 

### character encoding

struts.i18n.encoding=GBK

 

深圳人才网 深圳招聘网 深圳人才招聘网 深圳人才大市场 

企业、个人免费注册,获取想要的 深圳 软件工程师招聘信息 月薪最低3000-8000,更有高端猎头职位! 

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

分享到:
评论
1 楼 gabriel80 2009-09-04  
对于文件限制大小问题。。
strut包的确是默认大小2M。。
对于修改maxSize最大值也是可行的。。
但是这样我们就没法做到限制文件传输大小的控制。。
建议:
  MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
        // Bind allowed Files
        Enumeration fileParameterNames = multiWrapper.getFileParameterNames();
        while (fileParameterNames != null && fileParameterNames.hasMoreElements()) {
            // get the value of this input tag
            String inputName = (String) fileParameterNames.nextElement();
            // Get a File object for the uploaded File
            File[] files = multiWrapper.getFiles(inputName);
..............................................
            //到这里就可以取到客户端提交到的文件了。。后面你想怎么校验就是读者自己的事情了。。。

}

对于客户端往服务器端上传文件。。
struts的原理是:把客户端的文件暂时拷贝到了服务器端的临时文件夹里的临时文件。。
我们操作到的file文件其实是服务器端本地的文件(临时文件。它会在我们完成操作后。自动清除这些文件的)

相关推荐

Global site tag (gtag.js) - Google Analytics