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>

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

时间: 2024-10-10 14:33:52

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

笔记02 文件上传、文件下载、类型转换器、国际化的支持

Struts2的上传 1. Struts2默认采用了apache commons-fileupload  2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload相关依赖包 * commons-io-1.3.2.jar * commons-fileupload-1.2.1.jar 4. 表单中需要采用POST提交方式,编码类型需要使用:multipart/form-data 5. Struts2的Action     取得文件名称->>规则:输入域的名称+

struts——文件上传

上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封装的一种方式: 3,以字符的方式传输文件. 其实这三种方式都差不 多,都是将文件先从客户端一临时文件的形式,传输到服务器的临时文件夹下,然后在将该临时文件复制到我们要上传的目录.另外,有一个需要注意,就是上传过 程中产生的这些临时文件,Struts2不会自动清理,所以我们需要手动清理临时文件,这一个

struts(文件上传与下载)

文件上传: 1. Struts2默认采用了apache commons-fileupload.需要引入commons-fileupload相关依赖包: * commons-io-1.3.2.jar * commons-fileupload-1.2.1.jar 2. 表单中需要采用POST提交方式,编码类型需要使用:multipart/form-data 3. Struts2中Action相关属性命名规则: 取得文件名称->>规则:输入域的名称+固定字符串"FileName"

struts文件上传(多文件)

第01步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

PHP文件上传error的错误类型 - $_FILES[&#39;file&#39;][&#39;error&#39;]

假设文件上传字段的名称img,则: $_FILES['img']['error']有以下几种类型 1.UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功. 2.UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值. 3.UPLOAD_ERR_FORM_SIZE 其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值. 4.UPLOAD_ERR_PARTIA

Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”

Struts的文件上传问题,相信很多人都会使用allowedTypes参数来配置允许上传的文件类型,如下. [html] view plaincopy <param name="allowedTypes"> image/png,image/bmp,image/jpg </param> 但是,用过这个参数的人都知道,allowedTypes是“文件类型”, 而不是“文件后缀名”,文件类型与文件后缀名有什么区别呢? 就如后缀名为bmp的图片的文件类型为image/b

struts 文件上传下载

上传 1.编写上传action类 UploadAction.java 1 package jxf.b_upload; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 import javax.servlet.http.HttpServletRequest; 7 8 import org.apache.commons.io.FileUtils; 9 import org.apache.struts2.ServletActionC

struts文件上传和下载

文件上传 jsp中 <a href="/file/new.action">文件上传案例</a> fileaction中 @Override public String execute() throws Exception { return SUCCESS; } 配置xml,记得在struts.xml中导入这个xml, <constant name="struts.multipart.maxSize" value="104857

struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题

<interceptor-ref name="fileUpload"> <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param> <!-- 图片不能大于5M --> <param name="maximumSize">5242880</param> </