• struts2(六) 文件上传和下载


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

                          --WZY

    一、单文件上传

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

             

  • 相关阅读:
    NTFS文件系统的主要优点体现在以下三个方面
    子网划分,主机号,网络号计算
    hdu1008
    hdu1006
    hdu1004
    Git 版本回退
    Git 提交修改内容和查看被修改的内容
    Git 怎么创建本地库,向本地库提交文件
    mybatis中#{}和${}的区别
    请求头和响应头
  • 原文地址:https://www.cnblogs.com/whgk/p/6610841.html
Copyright © 2020-2023  润新知