zoukankan      html  css  js  c++  java
  • servlet通过响应头Content-Disposition实现文件下载效果

    package day08;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    /**
     * 案例【Content-Disposition】-- attachment; filename=aaa.zip 
     * @author Administrator
     *  文件下载效果
     */
    public class ResponseDemo05 extends HttpServlet {
    
    	private static final long serialVersionUID = 4407828089924059971L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		/*
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("image/png;charset=utf-8");
    		
    		// 1) 读取本地文件
    		FileInputStream in = new FileInputStream("e:/picture.png");
    		
    		// 2) 写出给浏览器(字节内容)
    		OutputStream out = response.getOutputStream();
    		byte[] buf = new byte[1024];
    		int len = 0;
    		// 边读边写
    		while( (len=in.read(buf)) != -1) {
    			out.write(buf, 0, len);
    		}
    		// 关闭
    		in.close();
    		out.close();
    		*/
    		
    		/**
    		 * 但是我们是想让浏览器把这张图片以下载的方式打开
    		 */
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		
    		File file = new File("e:/图片.png");//                                中文的图片名的话,必须这样进行包装     先通过GBK进行getBytes,然后通过设置新的ISO8859_1
    		response.setHeader("content-disposition", "attachment;filename="+new String(file.getName().getBytes("GBK"),"ISO8859_1"));
    		// 1) 读取本地文件
    		FileInputStream in = new FileInputStream(file);
    		
    		// 2) 写出给浏览器(字节内容)
    		OutputStream out = response.getOutputStream();
    		byte[] buf = new byte[1024];
    		int len = 0;
    		// 边读边写
    		while( (len=in.read(buf)) != -1) {
    			out.write(buf, 0, len);
    		}
    		// 关闭
    		in.close();
    		out.close();
    		
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		
    	}
    
    }
    

  • 相关阅读:
    Notepad++可以结合命令行来搭建各种编程环境
    installshield中如何执行批处理 还有设置环境变量
    intallshield各种控制语句
    实际应用中installshield的事件处理
    intallshield各种控制语句
    java 沙箱
    手写installshield入门
    installshield安装程序自注册dll
    实际应用中installshield的事件处理
    installshield中如何执行批处理 还有设置环境变量
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053526.html
Copyright © 2011-2022 走看看