Struts文件上传allowedTypes/allowedExtensions问题

最近做SSH项目要实现文件上传的功能于是就用到了Struts2中的拦截器对文件的大小和类型进行筛选,我要求用户只能上传图片格式的文件,于是在struts.xml中使用了以下代码:

    <package name="upload2" extends="struts-default">
        <action name="upload2" class="com.ljq.action.UploadAction2" method="execute">
            <!-- 动态设置savePath的属性值 -->
            <param name="savePath">/images</param>
            <result name="success">/WEB-INF/page/message.jsp</result>
            <result name="input">/upload/upload.jsp</result>
            <interceptor-ref name="fileUpload">
                <!-- 文件过滤 -->
                <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>
                <!-- 文件大小, 以字节为单位 -->
                <param name="maximumSize">1025956</param>
</interceptor-ref> <!-- 默认拦截器必须放在fileUpload之后,否则无效 --> <interceptor-ref name="defaultStack" /> </action> </package>


结果发现每次从jsp页面上传总是会跳到name="input"的result中,让我很是头疼。我就试着把拦截器中的两行参数注释掉,代码如下:

                <!-- 文件过滤 -->
                <!-- <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param> -->
                <!-- 文件大小, 以字节为单位 -->
                <!-- <param name="maximumSize">1025956</param> -->

果然可以上传成功了。接着我进一步分别注掉这两行,看出还是限制文件类型那一行出了问题。在网上查了另外一种写法,代码如下:

<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/pjpeg</param>

依旧行不通。。。没办法,既然限制文件类型总是不好使那我只能换另一种方式:设置允许上传的文件后缀名


设置上传的文件后缀名要用到name="allowedExtensions"这个参数,代码如下:

<!-- 允许后缀名为png,bmp,jpg的文件上传 -->     
<param name="allowedExtensions">  
    png,bmp,jpg
</param> 
运行成功!虽然问题算是解决了,但是还是没弄明白为什么用name="allowedTypes"这个参数不好用,希望有明白的高手予以解答,不胜感激!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值