servlet实现下载文件功能

来源:互联网 发布:μtorrent mac 编辑:程序博客网 时间:2024/05/01 23:37

文件名是英文的:

public void doGet(HttpServletRequest request, HttpServletResponse response)        throws ServletException, IOException {            String path = this.getServletContext().getRealPath("/download/1.jpg");    String filename = path.substring(path.lastIndexOf("\\") + 1);            response.setHeader("content-disposition", "attachment;filename=" + filename);            InputStream in = null;    ServletOutputStream out = null;    try{        in = new FileInputStream(path);        int len = 0;        byte buffer[] = new byte[1024];        out = response.getOutputStream();        while((len = in.read(buffer)) > 0){            out.write(buffer, 0, len);        }    }finally{        if(in != null){            try{                in.close();            }catch(Exception e){                e.printStackTrace();            }        }        if(out != null){            try{                out.close();            }catch(Exception e){                e.printStackTrace();            }        }    }}


文件名含有中文,可用代码:

private void test2(HttpServletResponse response)        throws FileNotFoundException, IOException {    String path = this.getServletContext().getRealPath("/download/黑客.jpg");    String filename = path.substring(path.lastIndexOf("\\") + 1);            response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename,"UTF-8"));            InputStream in = null;    ServletOutputStream out = null;    try{        in = new FileInputStream(path);        int len = 0;        byte buffer[] = new byte[1024];        out = response.getOutputStream();        while((len = in.read(buffer)) > 0){            out.write(buffer, 0, len);        }    }finally{        if(in != null){            try{                in.close();            }catch(Exception e){                e.printStackTrace();            }        }        if(out != null){            try{                out.close();            }catch(Exception e){                e.printStackTrace();            }        }    }}

0 0