Struts文件上传的大小及类型的限制

前几天讲到struts文件上传,设置了fileUpload拦截器的参数以后,超过大小的文件被限制上传,但是类型不匹配的,却没有得到限制,今天有时间找了一下原因,发表一篇博文,请遇到问题的同学,参考一下:

在struts-default.xml中可以看到fileUpload的拦截器对应的类org.apache.struts2.interceptor.FileUploadInterceptor,查看源码会发现,类中的几个属性:

 protected Long maximumSize;
    protected Set<String> allowedTypesSet = Collections.emptySet();
    protected Set<String> allowedExtensionsSet = Collections.emptySet();

其中:maximumSize为允许上传的单个文件的大小

allowedTypesSet 为允许上传类型的集合

allowedExtensionsSet为允许上传的扩展名的集合

于是就有了我的错误配置:

 

<!-- 文件上传 Action -->
        <action name="fileup" class="cn.bdqn.action.FileUpAction">
            <interceptor-ref name="fileUpload"><!-- 添加 文件上传 拦截器 设置 ,并添加参数 -->
                <param name="maximumSize">200000</param><!-- 单个文件大小 -->
                <param name="allowedExtensionsSet">html,txt</param><!-- 允许上传的文件扩展名 -->
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref><!-- 添加 默认 拦截器栈设置 , -->
            <param name="savePath">/upload</param>
            <result>up_success.jsp</result>
            <result name="input">testUp.jsp</result>
        </action>

我按照拦截器中的属性配置了拦截器的三个参数,出现的错误结果就是:

超过大小的文件被限制上传,但是类型不匹配的,却没有得到限制

今天仔细看了一个源码里,有三个方法:

   /**
     * Sets the allowed extensions
     *
     * @param allowedExtensions A comma-delimited list of extensions
     */
    public void setAllowedExtensions(String allowedExtensions) {
        allowedExtensionsSet = TextParseUtil.commaDelimitedStringToSet(allowedExtensions);
    }

    /**
     * Sets the allowed mimetypes
     *
     * @param allowedTypes A comma-delimited list of types
     */
    public void setAllowedTypes(String allowedTypes) {
        allowedTypesSet = TextParseUtil.commaDelimitedStringToSet(allowedTypes);
    }

    /**
     * Sets the maximum size of an uploaded file
     *
     * @param maximumSize The maximum size in bytes
     */
    public void setMaximumSize(Long maximumSize) {
        this.maximumSize = maximumSize;
    }

于是,找到了错误,我们配置的拦截器的参数,应该根据set方法来,所以三个参数就应该是:maximumSize、allowedTypes和allowedExtensions

修改配置为:

<interceptor-ref name="fileUpload"><!-- 添加 文件上传 拦截器 设置 ,并添加参数 -->
                <param name="maximumSize">200000</param><!-- 单个文件大小 -->
                <param name="allowedExtensions">html,txt</param><!-- 允许上传的文件扩展名 -->
            </interceptor-ref>

测试,文件大小和扩展名的限制,成功!

 

转载于:https://www.cnblogs.com/zhuaixia/p/3995141.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值