本文主要是介绍利用HttpServletResponse实现文件的下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在B站观看了关于通过Response实现文件下载的方式(不需要第三方Jar包),现将代码记录如下:
@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//a.获取下载文件的路径(从相对路径转化为绝对路径)String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/avatar.jpg");//b.下载的文件名是啥String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);//c.设置想办法让浏览器能够支持下载我们需要的东西,并设置文件名编码形式为UTF-8,可以识别中文文件名response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"UTF-8"));//d.获取下载文件的输入流FileInputStream in = new FileInputStream(realPath);//e.创建缓冲区int len = 0 ;byte[] buffer = new byte[1024];//f.获取OutputStream对象,这里是要将文件写入到浏览器ServletOutputStream out = response.getOutputStream();//g.将FileOutputStream流写入到缓冲区,h.使用OutputStream将缓冲区的数据输出到客户端while((len = in.read(buffer))!=-1){out.write(buffer,0,len);}// 关闭资源in.close();out.close();}
这篇关于利用HttpServletResponse实现文件的下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!