`
谷超
  • 浏览: 163235 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2 文件下载

 
阅读更多

文件下载在项目中经常会使用。

最简单的文件下载,只要提供一个链接地址就能够进行下载,比如在eclipse官方网站下载eclipse时就是

通过这样的方式进行下载。

 第二种方式可以通过HttpServletResponse进行下载,通过文件读写的方式把要下载的文件写到

HttpServletResponse的输出流中,完成文件下载。

servlet代码

 

package com.guchao.test.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = -135694745600205819L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		File f = new File("d:\\role.txt");
		//注意设置的文件类型要与文件对应
		resp.setContentType("text/plain,charset=UTF-8");
		resp.setHeader("Content-Disposition", "attachment;filename="+f.getName());
		FileInputStream fis = new FileInputStream(f);
		ServletOutputStream os = resp.getOutputStream();
		byte[] buffer = new byte[1024];
		int length = 0;
		while((length=fis.read(buffer)) != -1){
			os.write(buffer, 0, length);
			os.flush();
		}
		fis.close();
		os.close();
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}
}
 

 

同样可以使用Struts2进行文件下载,本人没有看过Struts2关于文件下载的源码,但个人觉得可能会和第

二种方式类似。Struts2文件下载如下:

 Action类

package com.guchao.struts2.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;

public class FileDownloadAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7728770879895650308L;

	private InputStream downloadInputStream;
	
	@Override
	public String execute() throws Exception {
		File f = new File("d:\\role.txt");
		downloadInputStream = new FileInputStream(f);
		return "idownload";
	}
	
	public InputStream getDownloadInputStream() {
		return downloadInputStream;
	}

}

 

struts.xml

<action name="fileDownload" class="com.guchao.struts2.action.FileDownloadAction">
        	<result name="idownload" type="stream">
				<param name="contentType">text/plain</param>
				<param name="bufferSize">1024</param>
				<param name="contentDisposition">attachment;filename=role.txt</param>
				<param name="inputName">downloadInputStream</param>
			</result>
        </action>

 

 JSP页面

<a href="<%=basePath %>fileDownload">download file by Struts2</a><br/>

 这样就完成了Struts2的文件下载

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics