首页 > 代码库 > struts文件下载机制
struts文件下载机制
Struts2 中使用 type="stream" 的 result 进行下载即可。只用提供一个输入流inputStream,剩下的输出工作struts帮我们做。
1.可以为 stream 的 result 设定如下参数
contentType: 结果类型
contentLength: 下载的文件的长度
contentDisposition: 设定 Content-Dispositoin 响应头. 该响应头指定响应是一个文件下载类型, 一般取值为 attachment;filename="document.pdf".
inputName: 指定文件输入流的 getter 定义的那个属性的名字. 默认为 inputStream
这四个一般在getter方法中定义或者在execute方法执行时设置。
bufferSize: 缓存的大小. 默认为 1024
allowCaching: 是否允许使用缓存
contentCharSet: 指定下载的字符集
这三个参数一般使用默认值或者在xml文件中配置。
以上参数可以在 Action 中以 getter 方法的方式提供,也可以通过配置配置,也可以使用默认值。也可以动态设置值,在execute方法中设置。
1 package FileDownload; 2 3 import java.io.FileInputStream; 4 import java.io.InputStream; 5 6 import javax.servlet.ServletContext; 7 8 import org.apache.struts2.ServletActionContext; 9 10 import com.opensymphony.xwork2.ActionSupport; 11 12 public class FileDownLoad extends ActionSupport { 13 14 /** 15 * 16 */ 17 private static final long serialVersionUID = 1L; 18 19 private String contentType; 20 private long contentLength; 21 private String contentDisposition; 22 private InputStream inputStream; 23 24 25 public String getContentType() { 26 return contentType; 27 } 28 29 30 public long getContentLength() { 31 return contentLength; 32 } 33 34 35 // 在getter方法中设置所需要的参数 36 public String getContentDisposition() { 37 contentDisposition = "attachment;filename=filesUp.html"; 38 return contentDisposition; 39 } 40 41 42 public InputStream getInputStream() { 43 return inputStream; 44 } 45 46 47 @Override 48 public String execute() throws Exception { 49 50 //确定各个成员变量的值 51 contentType = "text/html"; 52 53 ServletContext servletContext = 54 ServletActionContext.getServletContext(); 55 String fileName = servletContext.getRealPath("/files/filesUp.html"); 56 // 打开输入流 57 inputStream = new FileInputStream(fileName); 58 contentLength = inputStream.available(); 59 60 61 return super.execute(); 62 } 63 }
上面可以在execute方法执行时动态设置参数,也可以在getter方法中设置参数。
配置文件
<!-- 文件下载 --> <action name="fileDownload" class="FileDownload.FileDownLoad"> <result type="stream"> <!-- 其他的参数在类中设置或者使用默认 --> <param name="bufferSize">2048</param> </result> </action>
struts文件下载机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。