HttpServletResponse下载文件

//1、获取要下载的文件名称
String fileName = request.getParameter("filename");
    
//2、获取文件在tomcat里面的绝对路径地址
String path = getServletContext().getRealPath("download/" + fileName);
        
//让浏览器获取这份资源的时候,一下载的方式提醒用户,而不是直接展示。
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);

/*
 * 如果文件的名字带有中文,那么需要对这个文件名进行编码处理
 * 
 * 如果是IE,或者Chrome谷歌,使用URLEncoding编码
 * 
 * 如果是Firefox,使用Base64编码
 */
// 获取来访的客户端类型
String clientType = request.getHeader("User-Agent");

if (clientType.contains("Firefox")) {
	fileName = base64EncodeFileName(fileName);
} else {
	// 对IE或者Chrome谷歌浏览器
	// 对中文的名字进行编码处理
	fileName = URLEncoder.encode(fileName, "UTF-8");
}
        
//3、转化成输入流
InputStream is = new FileInputStream(path);        
OutputStream os = response.getOutputStream();
        
byte[] buffer = new byte[1024];
int len = 0;
while((len=is.read(buffer))!=-1) {
    os.write(buffer, 0, len);
}        
os.close();
is.close();
<body>

	让tomcat默认的servlet提供下载:<br>
	<a href="download/aa.jpg">aa.jpg</a><br>
	<a href="download/bb.txt">bb.txt</a><br>
	<a href="download/cc.rar">cc.rar</a><br>
	
	<br>手动编程提供下载:</br>
	<a href="HttpResponseDownloadDemo?filename=aa.jpg">aa.jpg</a><br>
	<a href="HttpResponseDownloadDemo?filename=bb.txt">bb.txt</a><br>
	<a href="HttpResponseDownloadDemo?filename=cc.rar">cc.rar</a><br>
    <a href="HttpResponseDownloadDemo?filename=黑马.png">黑马.png</a><br>

</body>

以上是servlet代码片段及html页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值