struts2上传类型、大小限制以及国际化的问题
2016-04-11 17:30
429 查看
(1)问题背景:在做struts2上传功能时会遇到上传的类型大小限制问题。
比如说此上传功能只可以上传图片文件(image/bmp,image/png,image/gif,image/pjpeg,image/jpg);此上传中的上传文件大小不能超过2M
(2)解决办法:
首先要在struts.xml中加入拦截器。写法如下,
此处默认拦截器defaultStack要放在fileUpload后边。否则,fileUpload拦截器不起作用。
fileUpload中allowedTypes是限制类型的语句,上述例子中允许的是图片类型;maximumSize是限制文件大小的语句,2097152的单位是字节,等于2M。
还需要设置的一个大小是在struts.xml中加入:
当上传文件大于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提示错误信息了。
比如说此上传功能只可以上传图片文件(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提示错误信息了。
相关文章推荐
- 深入理解Java类加载机制
- SpringMVC整合fastjson、easyui 乱码问题
- java多线程
- maven项目转成web项目,通过eclipse…
- java再次设置Timer的schedule
- [Java] 01 String 内存分析
- Java:注解(元数据)
- java for循环的几种写法
- eclipse中高亮显示相同的变量
- java中的if语句
- struts2-系统默认校验器大全
- 【Java并发编程】对比synchronized和Lock
- JVM学习笔记二:GC 垃圾回收
- LeetCode Ugly Number JAVA
- SLF4J日志框架
- Java中的instanceof关键字
- Java ConcurrentModificationException异常原因和解决方法
- Java中ListIterator和Iterator详解与辨析[转]
- 快速排序算法Java版
- java web在内网/局域网中访问,客户端主机ip获取