通过response输出流实现下载功能

本文介绍如何利用HTTP响应的输出流(response.getOutputStream())来实现文件的下载功能,通过将文件内容写入输出流,达到从服务器向客户端发送文件的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%//download.jsp%>
<%@ page language="java" import="java.util.*,java.io.*"
	pageEncoding="GBK"%>
<%
	response.setCharacterEncoding("utf-8");
	String path = request.getParameter("path");//get path
	path = new String(path.getBytes("iso-8859-1"));//parameter must be ISO-8859-1
	File file = new File(path);
	InputStream in = new FileInputStream(file);
	OutputStream os = response.getOutputStream();//get response outputStream
	response.addHeader("Content-Disposition", "attachment;filename="
			+ new String(file.getName().getBytes("gbk"), "iso-8859-1"));
	response.addHeader("Content-Length", file.length() + "");
	response.setContentType("application/octet-stream");
	int data = 0;
	while ((data = in.read()) != -1) {//-1 when reach the end
		os.write(data);
	}
	os.close();
	in.close();
%>

上面的代码将获取的文件通过response.getOutputStream输出。

<span style="font-size:10px;"><A
<span style="white-space:pre">	</span>HREF="download.jsp?path=<%=getServletContext().getRealPath("test.jpg")%>">
<span style="white-space:pre">	</span><img src="images/download.GIF" width="22" height="22" border="0">
</A></span>
上面的代码嵌入到某个JSP中,点击图片,执行download.jsp方法,并把文件的路径以参数的形式传送过去。其中getServletContext().getRealPath() 获取到WebRoot根目录下,可以通过拼接路径获得WebRoot下的子目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值