HttpServletResponse 如何将图片下载到客户端(OutputStream,PrintWriter)呢?

java-教程王 Servlet 发布时间:2022-01-02 09:51:29 阅读数:10873 1
下文笔者讲述HttpServletResponse将图片下载到客户端的方法分享,如下所示:
在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();
} 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202201/247.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者