1、download.jsp
<body>
<h1>文件下载内容:</h1><br/>
banner.jpg下载地址:<a href="FileDownLoad?num=1">点击下载1</a>
<br/><br/>
banner.rar下载地址:<a href="FileDownLoad?num=2">点击下载2</a>
</body>
2、FileDownLoad.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import com.opensymphony.xwork2.ActionSupport;
/**
* 文件下载Action
* @author hanwen
*
* 2015-5-23 下午07:50:33
*/
public class FileDownLoad extends ActionSupport{
private int num;
private String file;
private InputStream inputStream;
public String execute(){
if(1 == num){
this.file = "banner.jpg";
//获取资源路径
//inputStream = ServletActionContext.getServletContext().getResourceAsStream("E:\\images\\banner.jpg");
try {
inputStream = new FileInputStream(new File("E:\\images\\banner.jpg"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}else if(2 == num){
this.file = "banner.rar";
//获取资源路径
try {
inputStream = new FileInputStream(new File("E:\\images\\banner.rar"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
return SUCCESS;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
}
3、struts.xml
<package name="default" namespace="/" extends="struts-default">
<!-- 文件下载 -->
<action name="FileDownLoad" class="com.hanwen.action.FileDownLoad">
<!-- 结果类型必须写成type="stream",与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult -->
<result type="stream">
<!-- 下载文件的文件类型,application/octet-stream 表示不限制下载类型 -->
<param name="contentType">application/octet-stream</param>
<!-- attachment;fileName=${在Action 类中获取的文件名} -->
<param name="contentDisposition">attachment;fileName=${file}</param>
<!-- 下载文件的文件位置 -->
<param name="inputName">inputStream</param>
<!-- 下载文件的缓冲大小 -->
<param name="bufferSize">10240</param>
</result>
</action>
</package>