`

Struts2文件上传,文件大小问题

阅读更多

 

在struts2中我们上传文件大于struts.multipart.maxSize设置的值时会抛出the request was rejected because its size (XXXX) exceeds the configured maximum (XXXX)异常,他是不能被国际化的,这信息对应用户来说是非常不友好的,那任何处理

 

 

在struts2.2 中有两个地方设置上传文件大小:

 

  1. 一个是在拦截器fileUpload中设置  
        xml
    <interceptor-ref name="fileUpload">
    <param name="maximumSize"></param>
    </interceptor-ref>
     
     
  2. 在struts2 自带的文件default.properties中设置的(系统默认大小2M)
    struts.multipart.maxSize=2097152
    这个可以在struts.propertise 文件中修改

 

 

那这两个有什么区别呢?

 

 

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

   fileUpload拦截器只是当文件上传到服务器上之后,才进行的文件类型和大小判断。 如果上传的文件大小刚好这struts.multipart.maxSize与maximumSize 之间会抛出 key  struts.messages.error.file.too.large 对应的异常信息,这个才支持国际化。那不是把struts.multipart.maxSize设很大,不就解决问题了吗?非也! fileUpload拦截器只是当文件上传到服务器上之后,才进行的文件类型和大小判断,这样会造成系统产生多余没用的文件。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics