HttpServlet下载服务器资源的简单实现

本文介绍了如何使用Java的HttpServlet来实现服务器资源的下载功能。在客户端代码中,服务器通过字节流方式发送资源,并设置正确的MIME类型。同时,服务器端必须设置响应头,指示浏览器以附件形式下载资源,防止可解析的资源直接在浏览器中显示。

客户端代码:

	<h1 style="color:red">文件资源下载</h1>
	<a href="/TomCat/downloadServlet?filename=a.flv">a.flv</a><br>
	<a href="/TomCat/downloadServlet?filename=a.jpg">a.jpg</a><br>
	<a href="/TomCat/downloadServlet?filename=a.mp3">a.mp3</a><br>
	<a href="/TomCat/downloadServlet?filename=a.mp4">a.mp4</a><br>
	<a href="/TomCat/downloadServlet?filename=a.txt">a.txt</a><br>
	<a href="/TomCat/downloadServlet?filename=a.zip">a.zip</a><br>

在这里插入图片描述

服务器端:

        将资源通过字节读写方式发送给客户,唯一不同要设置两个地方:

  1. 资源的类型,MIME格式的后缀名:response.setContentType(this.getServletContext().getMimeType(String filename));,其中ServletContext.getMimeType(String filename)可以获得MIME后缀名。
  2. 告知浏览器该资源不是直接解析,而是通过附件形式打开(下载):response.setHeader("Content-Disposition","attachment;filename=String filename");未设置这一步的话,浏览器能够解析的资源会直接解析,不能解析的资源通知下载。

服务器端代码如下:

//获取要下载文件的文件名,filename为客户端传入的信息
String filename = request.getParameter("filename");
//获取文件相对路径
String path = "download" + filename;   
//获取要下载文件的绝对路径,servletContext.getRealPath(String url);url为该类的相对路径
ServletContext servletContext = this.getServletContext();
String realPath = servletContext.getRealPath(path);

//设置响应头,告知浏览器资源类型
response.setContentType(servletContext.getMime);
//通知浏览器该文件不能直接解析,而是通过附件形式打开(下载)。
response.setHeader("Content-Disposition","attachment;filename=" + filename);

//获得输入输出流
InputStream in = new FileInputStream(path);
ServletOutputStream out = response.getOutputStream();

//读取并输出文件
int len = 0;
byte[] bytes = new byte[1024];
while((len = in.read(bytes)) > 0){
out.write(bytes,0,len);
}

//释放资源
in.close();
out.close();
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值