您的位置:首页 > 编程语言 > Java开发

struts2上传类型、大小限制以及国际化的问题

2016-04-11 17:30 429 查看
(1)问题背景:在做struts2上传功能时会遇到上传的类型大小限制问题。

比如说此上传功能只可以上传图片文件(image/bmp,image/png,image/gif,image/pjpeg,image/jpg);此上传中的上传文件大小不能超过2M

(2)解决办法:

首先要在struts.xml中加入拦截器。写法如下,

<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,image/jpg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>


此处默认拦截器defaultStack要放在fileUpload后边。否则,fileUpload拦截器不起作用。

fileUpload中allowedTypes是限制类型的语句,上述例子中允许的是图片类型;maximumSize是限制文件大小的语句,2097152的单位是字节,等于2M。

还需要设置的一个大小是在struts.xml中加入:

<constant name="struts.multipart.maxSize" value="55000000"></constant>
struts.multipart.maxSize是指整个项目中所上传文件大小的总和不能超过的值,程序处理不了这么大的文件,超过这个大小后就报错。其默认值是2M。此处设置为55000000=52.45M 。

当上传文件大于maxSize的值时,程序报错;

当上传文件的值大于maximumSize小于maxSize时提示错误信息(错误信息的显示问题稍后会写出);

当上传文件的值小于maximumSize时上传成功!

(3)国际化

我们理想中的上传失败希望将错误信息显示出来。此文章主要讲“当上传文件的值大于maximumSize小于maxSize时提示错误信息”和“上传文件类型错误的提示信息”两个方面

要解决此问题,我们需要在src目录下加入两个文件:sturts.properties和message.properties

struts.properties中写一句话制定国际化信息配置的文件名称:

struts.custom.i18n.resources=message

message.propertie中

struts.messages.error.content.type.not.allowed=\u4E0D\u652F\u6301\u6240\u4E0A\u4F20\u683C\u5F0F,\u4E0A\u4F20\u6587\u4EF6\u7684\u6587\u4EF6\u53EA\u652F\u6301 image/bmp,image/png,image/gif,image/pjpeg,image/jpg

struts.messages.error.file.too.large=\u6587\u4EF6\u8FC7\u5927\uFF01\u8D85\u8FC7 2M

此文件的value是由中文转换为Unicode。意思分别是

不支持所上传格式,上传文件的文件只支持 image/bmp,image/png,image/gif,image/pjpeg,image/jpg;

文件过大!超过 2M

要想使得文件上传失败后的错误信息显示出来还需要最后一步:jsp界面的显示

在jsp中加入一句话:<s:fielderror></s:fielderror>。

这样当上传失败后错误信息会显示到jsp界面中

(4)需要注意的地方:

我在做此功能时候时写的是:

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

此种写法会遇到的问题就是,当上传文件大于maxSize和maximumSize时,项目死掉了就,并且没有任何提示信息及后台输出,相当不友好。

解决这个问题的方法是: <constant name="struts.multipart.maxSize" value="-1"></constant>

这里表示整个表单的大小没有限制,然后就是使用fileUpload拦截器设置。此时再上传100M的文件时,就会拦截maximumSize提示错误信息了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: