欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Servlet实现文件下载

程序员文章站 2022-05-24 14:34:57
...
package com.aib.soft;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class download extends HttpServlet {

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

	public void doGet(HttpServletRequest request, HttpServletResponse res)
			throws ServletException, IOException {

		//获取资源的绝对路径
		String path = this.getServletContext().getRealPath("/image/gr.jpg");
		//获取资源名
		String filename = path.substring(path.lastIndexOf("\\") + 1);
		// 以下载方式打开的响应头content-disposition,并用URLEncoder.encode方法转码
		res.setHeader("content-disposition", 
				"attachment;filename="+URLEncoder.encode(filename,"UTF-8"));

		//获取字节流(非文本资源必须用字节流)
		OutputStream out = res.getOutputStream();
		//文件输入流
		InputStream in=new FileInputStream(path);
		
		//向代表客户端的response输出资源
		byte[] buf=new byte[1024];
		int len=0;
		while((len=in.read(buf))>0){
			out.write(buf, 0, len);
		}
		//out.flush();  response由Servlet管理,可不关闭流
		//out.close();
		in.close(); // 由程序员自己管理 
		System.out.println("-------s");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	}

}