Struts2实现文件下载
实现文件下载:
1.导包:commons-fileload-xx.jar
commons-io-xx.jar
2.jsp页面:
<s:iterator value="#session.fileList">
<a href="download.action?fileName=<s:property />"><s:property /></a><br></s:iterator>
3.创建Action:DownLoAction
import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownloadAction extends ActionSupport {private String fileName; //要下载的文件名private String path; //文件目录private InputStream inputStream; //读取文件,输入流
private String contentType; //文件类型public String getContentType() {return contentType;
}public void setContentType(String contentType) {this.contentType = contentType;}public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;}public String getFileName() {return fileName;
}public void setFileName(String fileName) {this.fileName = fileName;}public String getPath() {path=ServletActionContext.getServletContext().getRealPath("/upload");
return path;
}public void setPath(String path) {this.path = path;}public InputStream getInputStream() throws FileNotFoundException {
inputStream = new BufferedInputStream(
new FileInputStream(this.getPath()+"/"+this.getFileName()));return inputStream;
}@Overridepublic String execute() throws Exception {return super.execute();
}}
4.配置action
<action name="download" class="com.action.DownloadAction"><result type="stream">
<param name="contentType">application/octet-stream</param>//文件类型
<param name="inputName">inputStream</param>//路径+文件名
<param name="contentDisposition">attachment;filename="${fileName}"</param><param name="bufferSize">50000</param>//缓冲区大小
</result></action>