struts2 下载文件

简介: 服务端action代码 public String downloadReport() {   try {   String path = new String(filePath.getBytes("ISO-8859-1"),"utf-8");//处理get请求传过来的中文参数乱码,filePath文件路径需要set方法接收页面参数  System.out.println(path)



服务端action代码

 public String downloadReport() { 
  try { 
  String path = new String(filePath.getBytes("ISO-8859-1"),"utf-8");//处理get请求传过来的中文参数乱码,filePath文件路径需要set方法接收页面参数
  System.out.println(path);
  //输入流(相对于浏览器是输入流,服务器是输出流)
  inputStream=ServletActionContext.getServletContext().getResourceAsStream(path);
  fileName=new String("检测报告.pdf".getBytes(), "ISO8859-1");//文件名包含中文需编码
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
   return ERROR;
  } 
  return SUCCESS;
 }



struts配置文件

 <action name="downloadReport" class="orderAction" method="downloadReport" >
   <result name="success" type="stream">
   <param name="contentType">application/octet-stream;charset=UTF-8</param>  
   <param name="contentDisposition">attachment;filename=${fileName}</param>
    <!-- filename 指定下载文 件保存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名,这里使用的是动态文件名,${fileName}-->
   <param name="bufferSize">4096</param>
        <!-- 输出时缓冲区的大小-->
    <param name="inputName">inputStream</param>
           <!--  根据文件项目路径得到的输入流,需要提供get方法 -->
   </result>
  </action>


结果类型必须要写成 type="stream"  ,与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult

)  <param name="contentDisposition">attachment;fileName="${fileName}"</param>
     contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择
2)  attachment :下载时会打开下载框
3)  fileName="${fileName}" :在这定义的名字是一个动态的,该名字是显示在下载框上的文件名字



参考文章:

http://blog.csdn.net/xiazdong/article/details/7231977

 

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1680584

目录
相关文章
|
Java 开发者
Struts2的文件下载 | 学习笔记
快速学习 Struts2的文件下载,介绍了 Struts2的文件下载系统机制, 以及在实际应用过程中如何使用。
90 0
|
前端开发 JavaScript Java
struts2的文件上传
在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在...
953 0
Struts2文件上传
1  在Struts2中上传文件需要 commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar 这两个包。  2  确认页面form表单上的提交方式为POST,enctype属性的值为“multipart/form-data”。
832 0
Struts1——文件上传
       在struts1中,框架本身引入commons-fileupload:         只需几行代码+配置,便可以完成文件的上传。      首先使我们form表单里面的配置:   然后在ActionForm中,将我们的input为file的提交项对应为FormFile类型: 在Action中,通过我们的ActionForm就可以直接拿到上传文件的信息,进行存盘,入库等操作。
1008 0
|
Java 前端开发
struts2 文件下载
文件下载是一个很常见的功能,用struts2实现文件下载的步骤: 一)定义一个Action类,FileDownload.java [java] view plaincopy package com.struts2.filedownload;      import java.io.InputStream;  
1230 0