Servlet实现文件的下载
java代码如下:
/**
* 文件下载
*/
@WebServlet("/Servlet_test05")
public class Servlet_test05 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String realPath = getServletContext().getRealPath("/img/" + name);//获取文件的绝对路径
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(realPath));//使用字节缓冲流读取文件
/*
设置响应头支持的类型
Content-type消息头名称-----支持的类型 ;
application/octet-stream 消息头参数----应用的类型为字节流
*/
resp.setHeader("Content-type", "application/octet-stream");
/*
设置响应头以下载的方式打开附件;
Content-Disposition 消息头名称----处理的形式;
"attachment;filename="+name 消息头参数---以附件的形式进行处理---指定下载文件的名称
*/
resp.setHeader("Content-Disposition","attachment;filename="+name);
//获取字节输出流对象
ServletOutputStream outputStream = resp.getOutputStream();
byte[] bytes = new byte[1024];
int len;
while ((len = bin.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
outputStream.flush();
}
bin.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
前端html代码如下:
<a href="/demo04/Servlet_test05?name=1.jpg">1.jpg下载</a>