文件下载
有一个界面index.jsp,使用最简单的超链接,实现点击过后弹出下载提示框
文件下载步骤
a.请求(地址 or 超链接 or form表单),请求servlet
b.servlet通过文件的地址,将文件转为输入流,读到servlet
c.通过输出流将已经转为输出流的文件,输出给用户
注意:下载需要设置以下两个地方:
1、设置文件下载类型,若要下载图片则设置为
response.setContentType("image/jpeg");
2、下载文件需要设置响应消息头
该实体头的作用是让服务器告诉浏览器它发送的数据 的类型;
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
主要代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filename=request.getParameter("filename");
//从index.jsp里获取要下载的文件名,用getParameter()方法
response.setContentType("image/jpeg");
//下载文件类型
response.setHeader("Content-Disposition", "attachment;filename=" + filename);
//设置下载的响应消息头,同时提示下载提示框,filename是文件名
InputStream input=getServletContext().getResourceAsStream("/WEB-INF/timg.jpg");
//将图片转换为输入流输入到Servlet getResourceAsStream()里的路径是文件所在位置的相对位置
OutputStream output = response.getOutputStream();
//将输入流转换为输出流
byte[] buff=new byte[1024*10]; //缓冲区,大小可定义
int len=0;
while((len=input.read(buff))>-1)//循环将输入流中的内容读取到缓冲区当中
{
output.write(buff,0,len);//输出缓冲区的内容到浏览器,实现文件下载
}
input.close();
output.close();
}
前端index.jsp里的超链接
<body>
<a href=DownloadServlet?filename="timg.jpg">点击下载图片</a>
</body>
注意:
@WebServlet("/DownloadServlet")
/**
* 注解 可达到在web.xml文件配置的目的,
注解@WebServlet中的属性值"/DownloadServlet"表示了web.xml 配置文件中
<servlet-mapping> 元素的子元素 <url-pattern> 里的值。**/