Response下载文件

这篇博客介绍了如何使用Servlet进行文件下载。首先,通过HttpServletRequest获取下载文件的路径和名称,然后设置响应头以支持浏览器下载。接着,打开文件输入流,创建缓冲区,并利用ServletOutputStream将文件内容写入客户端。整个过程涉及到了HTTP响应、文件I/O和流的处理。
摘要由CSDN通过智能技术生成

Response下载文件

web服务器收到客户端的http请求,分别创建一个代表请求的HttpServletRequest对象,一个代表响应的httpServletResponse。

1、简单分类

向浏览器发送数据的方法

ServletoutputStream getOutputStream() throws IOException;
PrintWriter getWriter() throws IOException;

向浏览器发送响应头的方法

void setStatus(int var1);

2、常见应用

1、向浏览器输出消息

2、下载文件

1、获取下载文件路径
2、文件名
3、想办法浏览器能支持下载我们需要的东西
4、获取下载文件的输入流
5、创建缓冲区
6.获取outputStream对象
7、将fileoutStream流写入缓冲区
8、使用OutputStream将缓冲区数据输出到客户端
public class FileServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//1、获取要下载文件的路径
		String realPath=this.getServletContext().getRealPath("/7.png");
		System.out.println("下载文件路径为:"+realPath);
		//2、下载的文件名是
		String fileName=realPath.substring(realPath.lastIndexOf("\\")+1);
		//web下载文件的头信息
		//3、设置让浏览器可以支持下载我们需要的东西
		resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));
		//4、获取下载文件的输入流
		FileInputStream in=new FileInputStream(realPath);
		//5、创建缓冲区
		int len=0;
		byte[] buffer=new byte[1024];
		//6、获取outputStream对象
		ServletOutputStream out=resp.getOutputStream();
		//7、将fileoutStream流写入到buffer缓冲区,使用outputStream将缓冲区数据输出到客户端
		while ((len=in.read(buffer))>0){
			out.write(buffer,0,len);
		}

		in.close();
		out.close();

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值