HttpServletResponse 如何将图片下载到客户端(OutputStream,PrintWriter)呢?
下文笔者讲述HttpServletResponse将图片下载到客户端的方法分享,如下所示:
OutputStream下载图片
在HttpServletResponse图片下载中,笔者建议使用OutputStream流 由于OutputStream流是一个字节流,可以处理任何类ing的数据例:
OutputStream下载图片
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1、得到文件的绝对路径,并且通过该路径得到一个字节输入流 String path = this.getServletContext().getRealPath("/WEB-INF/classes/java265img.png");//得到下载文件的绝对路径 FileInputStream fis = new FileInputStream(path); //2、创建字节输出流 ServletOutputStream sos = resp.getOutputStream(); //3、得到下载的文件名 String filename = path.substring(path.lastIndexOf("\\")+1);//得到的文件名为TomCat.png //4、设置文件编码 filename = URLEncoder.encode(filename, "UTF-8");//编码为UTF-8 //5、告知客户端(浏览器)要下载文件 resp.setHeader("content-disposition", "attachment;filename="+filename); resp.setHeader("content-type", "image/png");//文件类型 //6、输出 byte[] b = new byte[1024]; int len = 0; while((len=fis.read(b)) != -1){ sos.write(b, 0, len); } sos.close(); fis.close(); }
PrintWriter下载图片
//HttpServletResponse PrintWriter下载图片实例 private void downloadFileByPrintWriter(HttpServletResponse response) throws FileNotFoundException, IOException { String realPath = this.getServletContext().getRealPath("/download/java265img.JPG");//获取要下载的文件的绝对路径 String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);//获取要下载的文件名 //设置content-disposition响应头控制浏览器以下载的形式打开文件,中文文件名要使用URLEncoder.encode方法进行编码 response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8")); FileReader in = new FileReader(realPath); int len = 0; char[] buffer = new char[1024]; PrintWriter out = response.getWriter(); while ((len = in.read(buffer)) > 0) { out.write(buffer,0,len);//将缓冲区的数据输出到客户端浏览器 } in.close(); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。