Struts2学习(六)———— 文件上传和下载

一、单文件上传

      在没学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()这两个方法,一个是获取输入流,一个是获取中文名。其他的该怎么写就怎么写。

         

posted @ 2019-01-05 17:53  SurfCater  阅读(136)  评论(0编辑  收藏  举报