Servlet学习-文件下载设置
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); //获取文件名称,转码 String filename = new String(request.getParameter("filename").getBytes("iso-8859-1"),"utf-8"); //会输出单引号,只好去掉了,,, filename = filename.substring(1, filename.length()-1); //转码,弹出来的方框设置成中文 String showname = java.net.URLEncoder.encode(filename, "utf-8"); //设置Content-Disposition response.setHeader("Content-Disposition","attachment; filename=" + showname); String path = this.getServletContext().getRealPath("/source/"+filename); String referer = request.getHeader("Referer"); //防盗链 if(referer==null||!referer.startsWith("http://localhost:8080/DownWeb/")) { response.sendRedirect("/DownWeb/Error"); } System.out.println("path:=" + path); //打开文件 FileInputStream fis = new FileInputStream(path); OutputStream out=response.getOutputStream(); byte buff[] = new byte[1024]; int len = 0; while((len=fis.read(buff))>0) { out.write(buff, 0, len); } out.flush(); fis.close(); }