//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页面