首页 > 代码库 > struts2文件上传下载

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>

struts2文件上传下载