servlet實現下載檔案功能
阿新 • • 發佈:2019-01-08
檔名是英文的:
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(); } } } }