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

Struts文件上传allowedTypes/allowedExtensions问题

2014-03-05 23:31 423 查看
最近做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"这个参数不好用,希望有明白的高手予以解答,不胜感激!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: