public class DownloadServlet extends HttpServlet { private static final long serialVersionUID = 8438995458642112537L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); if(path != null && !path.trim().equals("")) { path = new String(path.getBytes("iso-8859-1") , "utf-8"); String realPath = request.getSession().getServletContext().getRealPath(path); File file = new File(realPath); if(file.exists() && file.isFile()) { InputStream in = null; try{ in = new FileInputStream(realPath); }catch (Exception e) { PrintWriter pw = response.getWriter(); pw.println("您请求的资源 " + path + " 不存在"); pw.close(); return; } String fileName = ""; if(realPath.indexOf("\\") == -1) { fileName = realPath; } else { fileName = realPath.substring(realPath.lastIndexOf("\\") + 1); } response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes() , "iso-8859-1")); OutputStream out = response.getOutputStream(); IOUtils.copy(in, out); IOUtils.closeQuietly(in); IOUtils.closeQuietly(out); } else { PrintWriter pw = response.getWriter(); pw.println("您请求的资源 " + path + " 不是文件或文件不存在"); pw.close(); return; } } else { PrintWriter pw = response.getWriter(); pw.println("错误的空资源"); pw.close(); } } }