前面对文件下载提过一点点,这里正好要讲文件上传,就放在一起在说一遍。

                      --WH

一、单文件上传

      在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮我们全做完了。我们只需要添加一点点信息,就可以完成上传的功能。  

      1、Action中需要提供三个属性

          File fieldName;  //文件表单项名称,也就是上传控件所填写的name属性名

          String fileContentType;  //file就使用的文件表单项名和固定ContentType,代表获取上传文件的类型

          String fileFileName;    //file同样是fieldName+FileName(固定),代表上传文件的文件名

        比如有<input type=”file” name=”myUpload”/>  表单项名称为: myUpload, 那么在action中的三个属性分别为

            myUpload  myUploadContentType  myUploadFileName

      2、在struts.xml中设置上传的一些配置信息,

        设置常量(可选)

          struts.multipart.parser:指定使用的上传组件,默认值为jakarta,表示使用commons-fileupload组件,Struts2还支持cos和pell

          struts.multipart.saveDir:临时目录,默认为Tomcat中的work目录

          struts.multipart.maxSize:整个请求大小限制,默认值为2097152b(1b等于8bit,1kb=1024byte,1M=1024kb), 也就是2M,这个是限制整个请求的大小,而不是单一文件的大小

          

        fileUploadl拦截器三个参数(action中以param来设置值,可选)

          maximumSize:上传的单个文件的大小限制  默认2M

          allowedTypes:允许上传文件的类型,多个类型以逗号隔开  如果不指定,默认允许任何类型的文件上传

          allowedExtensions:允许上传文件的扩展名,多个扩展名以逗号隔开  如果不指定,默认允许任何类型的文件上传

          

    

      3、jsp页面中form表单的enctype需要指定为  enctype="multipart/form-data"

      4、前面3步完成后,只需要在action中创建保存上传文件的位置,然后将其放入进去即可,fileUpload拦截器已经帮我们将各种参数获取到了。

      JSP

            

      struts.xml

            

      

      action

            

      上传的文件会放置在tomcat中该项目的WEB-INF的pictrue文件夹下。

二、多文件上传

      会有两种解决方案

      第一种,比较煞笔的,多写几个上传框,类似这样

            

        jsp  注意name要同名

              

  

        action

             

        这样就可以选择多个文件同时上传了,但是我是从来没见过这种多文件上传的,哈哈,所以用第二种方式,只有一个上传框,能同时选取多个文件一起上传,

     第二种:使用 uploadify 插件

        

三、文件下载。

       在讲解strust.xml中的action的resultType时就讲过一个stream的结果类型,该类型就是用来下载的。

       strust.xml

          

       action

         需要编写getPic(),和getFileName()这两个方法,一个是获取输入流,一个是获取中文名。其他的该怎么写就怎么写。

         

struts2(六) 文件上传和下载的更多相关文章

  1. struts2实现文件上传和下载

    在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来 ...

  2. Struts2的文件上传与下载

    <一>简述: Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置,<interceptor name="fileUp ...

  3. 【Struts2】文件上传与下载

    一.上传 1.1 Struts2实现步骤 浏览器端 服务器端 1.2 关于Struts2中文件上传细节: 1.3 示例 jsp文件 Action类 struts.xml文件配置 二.下载 2.1 文件 ...

  4. (十五)struts2的文件上传和下载

    文件上传的原理 我们以前学习上传的时候知道需要将表单的enctype属性设置为multipart/form-data. 表单的enctype属性指定的是表单数据的编码方式,有三个值: -applica ...

  5. Struts2之文件上传与下载

    时间:2017-1-11 15:47 --使用commons-fileupload组件上传1.客户端    *   method="post"    *   <input t ...

  6. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  7. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  8. Struts2 实现文件上传和下载

    实现上传功能 Struts2实际上是使用的commons fileupload 组件,所以记得导包哦. 1.首先你应该有一个上传页面 <!-- file的name属性与action中的File类 ...

  9. 7、Struts2实现文件上传和下载

    一.实现单个文件上传 1.创建如下web项目结构 2.在src下的com.action包下创建UploadAction.java package com.action; import java.io. ...

随机推荐

  1. Canvas动画 位图缓存提高效率和对应的内存问题

    对一个矢量图动画,开启位图缓存能大大提高运行效率.所谓开启位图缓存,其实要自己动手,先创建一个临时canvas,然后把矢量图绘制到这个canvas上,到了实际绘制时,直接把这个临时canvas拷贝到真 ...

  2. error:No buffer space available (maximum connections reached

    2015-02-02 17:49:09,035 ERROR basic.DBManager - Failded to establish the connection. com.mysql.jdbc. ...

  3. jquery版本号升级不兼容的问题:$(&quot;input&quot;).attr(&quot;value&quot;)功能发生改变

    之前项目中使用的是jquery-1.6.3.js,在这个版本号中,假设我们想获取输入框的值,能够使用$("input").attr("value")或者是$(& ...

  4. android布局layout中的一些属性

      1.可以使某些资源文件或UI组件可重用 <include layout="@layout/other"/>  2.定义一个文本编辑框,使用绝对定位 android: ...

  5. [POST] What Is the Linux fstab File, and How Does It Work?

    If you’re running Linux, then it’s likely that you’ve needed to change some options for your file sy ...

  6. Android开发环境——连接驱动ADB相关内容汇总

     Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...

  7. Learning to Rank:Point-wise、Pair-wise 和 List-wise区别

    机器学习的 ranking 技术——learning2rank,包括 pointwise.pairwise.listwise 三大类型. [Ref-1]给出的: <Point wise rank ...

  8. Jetty使用内存过大的解决方案

    之前用Jetty做过一个消息通知服务器,主要功能就是其他各个子系统如果有需要push给客户端消息的就把这个消息发给我的Server,我用WebSocket来推送给客户端~ 程序上线一段时间之后运维工程 ...

  9. linux平台下server运维问题分析与定位

    结合我工作中碰到的运维问题,总结一下Linux下server常见的运维问题以及定位方式.这里的server主要指自主开发的逻辑server,web srv因为通常采用通用的架构所以问题比较少. 逻辑s ...

  10. 超高频RFID模块

    1.应用开发有两种方法:串口和USB 2.从逻辑上将标签存储器分为四个存储区,每个存储区可以由一个或一个以上的存储器字组成.这四个存储区是: 00 保留区(Password):前两个字是销毁(kill ...