struts_限制上传文件类型

限制上传文件类型

struts默认拦截器中提供一个文件上传拦截器fileUpload,可以查看其源码,在其源码中我们发现了下面两个set集合

      那么我们可以在访问文件上传action时,添加一个默认拦截器,并且对其中的fileUpload拦截器中的allowTypesSet(allowedExtensionsSet)进行依赖注入(原理:调用某一属性的set方法)

      但是查看FileUploadInterceptor类,发现allowTypesSet(allowedExtensionsSet)的setter为setAllowTypes(setAllowedExtensions),所以在参数注入的时候应该注意应该参数名字应该去掉后面的Set字样

下面在struts.xml中配置拦截器

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="upload" extends="struts-default" namespace="/file">
        <action name="upload" class="action.UploadAction" method="upload">
            <interceptor-ref name="defaultStack">
                <param name="fileUpload.allowedTypes">image/png,image/jpeg</param>
            </interceptor-ref>
            <result name="input">/upload.jsp</result>
        </action>
    </package>
</struts>

当提交不满足参数中所写的文件类型的时候,如果没有更改其默认提示信息的情况下,会出现以下提示

但是这种提示太过复杂,所以设置一个中文提示

文件上传类型错误中文提示

默认错误提示信息是在

struts2-core-2.5.20.jar\org\apache\struts2\struts-messages.properties

解决办法:用国际化消息资源包,把对应的key取值改为中文

步骤:

第一步:在src目录创建一个fileUpLoadmessage.properties文件

struts.messages.error.uploading=Error uploading: {0}
struts.messages.error.file.too.large=File {0} is too large to be uploaded. Maximum allowed size is {4} bytes!
struts.messages.error.content.type.not.allowed="{1}"文件,其{3}文件类型不允许
struts.messages.error.file.extension.not.allowed="{1}"文件,其{3}扩展名不允许

       注意上边这些语句都是从struts2-core-2.5.20.jar\org\apache\struts2\struts-messages.properties文件中粘贴过来的,只是稍作修改,注意这里的文件编码格式必须和浏览器默认的编码显示格式一样,否则会出现中文乱码,写英文不会出现这种情况,如果出现了中文乱码情况,可以设置文件编码格式为对应的浏览器默认字符编码格式,一般修改为utf-8

修改方法:

File/settings/Editor/File Encodings,这里面将properties的格式修改为utf-8格式

第二步:在struts.xml中定义一个常量,配置国际化引用文件

注意这里面的 struts.custom.i18n.resources 从struts-default.xml中粘贴,是配置国际化的名字,value设置为上面的国际化properties文件名

那么万事具备,启动服务器,提交不符合文件类型的文件之后提示为:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值