Struts2--文件的下载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2--文件的下载相关的知识,希望对你有一定的参考价值。
通过个人的struts2案例,了解struts2如何下载文件
1.<!-- 在action中配置-->
<result name="success" type="stream">
//下载的文件类型
<param name="contentType">image/jpeg</param>
//文件输入流来源
<param name="inputName">imageStream</param>
//设置保存文件的文件名
<param name="contentDisposition">attachment;filename="document.pdf"</param>
//缓冲区大小
<param name="bufferSize">1024</param>
</result>
1.1.以上参数可以通过 Action 中的getter方式提供值!<不必再result中设置参数了>
1.2以下案例通过getter给变量赋值
2.javabean 具体实现代码 (案例)
package com.cn.web;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownloadFile extends ActionSupport {
/**
* struts2 文件下载图片
*/
private static final long serialVersionUID = 1L;
// 获取文件名称
private String imgname;
// 下载的文件类型
private String contentType;
// 下载的文件长度
private long contentLength;
// 设置保存文件的文件名
private String contentDisposition;
// 文件输入流来源
private InputStream inputStream;
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public long getContentLength() {
return contentLength;
}
public void setContentLength(long contentLength) {
this.contentLength = contentLength;
}
public String getContentDisposition() {
return contentDisposition;
}
public void setContentDisposition(String contentDisposition) {
this.contentDisposition = contentDisposition;
}
public String getImgname() {
return imgname;
}
public void setImgname(String imgname) {
this.imgname = imgname;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
// 获取下载的视图
public String downloadUI() {
return "downloadUI";
}
public String execute() throws IOException {
// 确定各个成员变量的值
contentType = "image/jpeg";
contentDisposition = "attachment;filename=" + imgname + ".jpg";
String newsrc = ServletActionContext.getServletContext().getRealPath(
"/WEB-INF/upload" + File.separator + imgname + ".jpg");
System.out.println(newsrc);
inputStream = new FileInputStream(newsrc);
contentLength = inputStream.available();
return SUCCESS;
}
}
3.打开struts2.xml文件,在相应的action中配置<result name="success" type="stream"></result>
<action name="down_*" class="com.cn.web.DownloadFile" method="{1}">
<result name="{1}">/WEB-INF/downloadUI.jsp</result>
<!-- 提供内容给用户下载 -->
<result name="success" type="stream">
<!-- 缓冲区大小 -->
<param name="bufferSize">1024</param>
</result>
</action>
4.html代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2 文件下载</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<a href="down_execute?imgname=886001c3-335b-4604-b547-a659f55ddf76">文件下载1:</a>
<hr>
<br />
<a href="down_execute?imgname=eff2d51f-192a-451c-be06-050fb6529ffd">文件下载2:</a>
<hr>
<br>
<a href="down_execute?imgname=e813e7ad-18dd-461a-87cf-2b035d41026d">文件下载3:</a>
<br>
<hr>
</body>
</html>
5.有什么不懂得同学,欢迎留言,相互交流,共同进步。
本文出自 “12276706” 博客,请务必保留此出处http://12286706.blog.51cto.com/12276706/1872153
以上是关于Struts2--文件的下载的主要内容,如果未能解决你的问题,请参考以下文章