Struts2的文件上传

1.文件上传的概述和注意事项
    * 把客户端的文件上传到服务器端。
    * FileUpload的组件
        * 创建工厂类
        * 创建能解析request类
        * 解析request,返回的List<FileItem>,自己循环,获取到表单的内容和文件上传的内容。
        * 如果获取到上传文件的名称和上传文件的输入流,使用io流完成文件的读写操作。

2.企业中实现文件上传的几种方式?
    * jspSmartUpload(主要应用 JSP model1 时代) 
    * fileupload (Apache commons项目中一个组件)
    * Servlet3.0 集成文件上传 Part类

3.客户端三个注意事项
    * method="post"
    * enctype="mutlipart/form-data"
    * <input type="file" name="myfile">

4.Struts2框架的使用拦截器完成了文件上传,并且底层使用也是FileUpload开源的组件。
    * 提供 FileUpload 拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容 
    * fileUpload拦截器 默认在 defaultStack 栈中, 默认会执行的 

    * 在Action中编写文件上传,需要定义三个属性
        > 文件类型File ,属性名与表单中file的name属性名一致.
        > 字符串类型String , 属性名:前段是name属性名一致 +ContentType;
        > 字符串类型String , 属性名:前段是name属性名一致+FileName;

        > 最后需要为上述的三个属性提供set方法。
        > 可以通过FileUtils提供 copyFile 进行文件复制,将上传文件 保存到服务器端 

5.文件上传中存在的问题
    * 先配置input逻辑视图
    * 在页面中显示错误信息

    * 文件上传的总大小默认值是2M,如果超过了2M,程序会报出异常。可以使用<s:actionError>来查看具体信息!
        > 解决总大小的设置,找到常量:
            * struts.multipart.parser=jakarta       -- 默认文件上传解析器,就是FileUpload组件
            * struts.multipart.saveDir=             -- 文件上传的临时文件存储目录
            * struts.multipart.maxSize=2097152      -- 文件上传的最大值(总大小),默认是2M

        > 可以在struts.xml中设置常量,修改文件上传的默认总大小!!!
            * <constant name="struts.multipart.maxSize" value="5000000"></constant>

6.还可以通过配置拦截器来设置文件上传的一些属性
    * 先在<action>标签中引入文件上传的拦截器
        <interceptor-ref name="defaultStack">
            <!-- 设置单个上传文件的大小 -->
            <param name="fileUpload.maximumSize">2097152</param>
            <!-- 设置扩展名 -->
            <param name="fileUpload.allowedExtensions">.txt</param>
        </interceptor-ref>

7.提示信息做国际化
    * 在核心包下找到:struts2-core-2.3.15.3.jar/org.apache.struts2/struts-messages.properties
    * 编写资源包
        > message_zh_CN.properties文件
        > key值:struts.messages.error.file.too.large 等
    * 在struts.xml中开启全局国际化常量:<constant name="struts.custom.i18n.resources" value="message"></constant>

8.多文件上传,在JSP的页面上提供多组文件上传的输入框,选择多个文件,上传。
    * 在Action中还是编写三个属性
        > 属性需要是数组或者List集合,这样就可以完成多文件上传了。        
        > 注意:是数组或者List集合        
        private File [] upload;             // 代表上传的文件
        private String [] uploadContentType;    // 代表文件的类型
        private String [] uploadFileName;       // 上传文件的名称

        > 提供属性的set方法

9.上传的JSP页面
    <form action="${ pageContext.request.contextPath }/xxx.action" method="post" enctype="multipart/form-data">
        文件上传:<input type="file" name="upload" /><br/>
        <input type="submit" value="上传" />
    </form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值