• struts2文件上传下载


    文件上传

    1.struts2中文件上传介绍

      struts2文件上传需要使用apache提供的文件上传组件(commons-fileupload.jar和commons-io.jar)。

      struts2文件上传的核心是通过fileupload拦截器实现的。

    2.如何实现文件上传

      1>.添加commons-fileupload和commons-io包

      2>.在jsp页面做如下配置

         将form的method属性值设置为post

         给form标记添加属性enctype="multipart/form-data"(让提交的表单数据,以流的形式提交)

      3>.在action类中添加如下属性,并添加get|set方法

         private File xxx;

         private String xxxFileName;

         private String xxxContentType;

         注意:xxx指代<input type="file">文件域的name值

               struts2的文件上传功能,是将客户端上传的文件保存到一个临时目录,我们要做的事情,就是将临时目录中的文件保存到指定目录。

    文件下载

    在struts2中如何实现文件下载


    1.添加一个文件下载的action类

      public class DownloadAction{

         private InputStream logoStream;

         public InputStream getLogoStream(){
            
            try{

                this.fileName = brand.getLogoUrl();
                
                //获取被下载的文件的绝对路径
                String filePath = ServletActionContext.getRequest().getServletContext().getRealPath(brand.getLogoUrl());
                
                System.out.println(filePath);
                
                //读取被下载的文件
                logoStream = new FileInputStream(filePath);
                
                return logoStream;
            
            }catch(Exception ex){
                
                ex.printStackTrace();
                return null;
            }
        }
      }

    2.在该类中添加一个action方法,返回success

      public class DownloadAction{

        public String download(){

          return "success";

        }

      }

    3.在struts.xml中配置该action,并且result的结果类型为stream

      <action name="download" class="...DownloadAction" method="download">
        <result name="success" type="stream">

        </result>
      </action>

    4.在result中设置参数inputName,该参数的值必须为action类中的一个数据类型为InputStream的属性。

      <action name="download" class="...DownloadAction" method="download">
        <result name="success" type="stream">
          <param name="inputName">logoStream</param>
        </result>
      </action>

    5.控制下载文件的文件名称:在result中添加参数:contentDisposition

     
      <action name="download" class="...DownloadAction" method="download">
        <result name="success" type="stream">
          <param name="inputName">logoStream</param>
          <param name="contentDisposition">attachment;filename="${fileName}"</param>
        </result>
      </action>

      注意:${fileName} 中的fileName为action类中的属性

    6.控制文件的类型:在result中添加参数:contentType

      contentType:

         word : application/msword

         excel : application/vnd.ms-excel

         ppt   : application/vnd.ms-powerpoint

         html  : text/html

         文本文件 : text/plain

         可执行文件  :  application/octet-stream

     
      <action name="download" class="...DownloadAction" method="download">
        <result name="success" type="stream">
          <param name="inputName">logoStream</param>
          <param name="contentDisposition">attachment;filename="${fileName}"</param>
          <param name="contentType">application/octet-stream</param>
        </result>
      </action>

  • 相关阅读:
    个人阅读笔记05—数据流图
    JVM(三)程序计数器【PC寄存器】
    JVM(三)运行时数据区的概述,线程概述
    JVM(二)表示两个Class对象是否为同一个类;Java程序对类的使用
    我的面试经之JVM(二)双亲委派机制
    我的面试经之JVM(二) ClassLoader补充【获取类的加载器的方式】
    我的面试经之JVM(二)类加载器的分类
    我的面试经之JVM(二)类加载器子系统ClassLoader类的加载过程
    Python小白要了解的模块大概用途(随学习进度更新),import xxxx
    Python常见的模块(知乎转载)
  • 原文地址:https://www.cnblogs.com/FriendlyMaKe/p/6424708.html
Copyright © 2020-2023  润新知