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;

	}

	@Override

	public 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>
 

你可能感兴趣的:(struts2)