分析步骤
- 获取下载文件的URL请求路径
- 下载的文件名是什么?
- 想办法设置让浏览器能够支持下载我们需要的类型
- 创建下载文件的输入流将需要下载的文件读取
- 创建缓冲区
- 获取输出流(OutputStream)对象
- 用FileOutStream流将读取的文件写入到缓冲区
- 使用OutoutSream将缓冲区中的数据通过response响应回去给浏览器
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String realPath = servletContext.getRealPath("/WEB-INF/classes/学习大纲.png");
String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
filename= URLEncoder.encode(filename,"utf-8");
resp.setHeader("Content-Disposition","attachment;filename="+filename);
FileInputStream fis=new FileInputStream(realPath);
byte[] bytes=new byte[1024];
int lent=0;
ServletOutputStream outputStream = resp.getOutputStream();
while ((lent=fis.read(bytes))!=-1){
outputStream.write(bytes,0,lent);
}
fis.close();
outputStream.close();
}