diff --git a/src/com/hellogithub/servlet/DownLoadServlet.java b/src/com/hellogithub/servlet/DownLoadServlet.java index 71a6252..c6b52f7 100644 --- a/src/com/hellogithub/servlet/DownLoadServlet.java +++ b/src/com/hellogithub/servlet/DownLoadServlet.java @@ -18,27 +18,13 @@ public class DownLoadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setCharacterEncoding("UTF-8"); - response.setContentType("text/html; charset=utf-8"); - - String curOrigin = request.getHeader("Origin"); - response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin); - response.setHeader("Access-Control-Allow-Credentials", "true"); - response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD"); - response.setHeader("Access-Control-Max-Age", "3600"); - response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With"); - response.setContentType("application/json;charset=UTF-8"); - - - PrintWriter writer = response.getWriter(); - + response.reset(); + response.setContentType("application/x-msdownload;charset=utf-8"); //得到要下载的文件名 String fileName = request.getParameter("filename"); - System.out.print(fileName); - + System.out.println(fileName); //本地需要进行转码,linux服务器使用就会出现下载乱码 //fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8"); - // System.out.print("转码后"+fileName); //上传的文件都是保存在/WEB-INF/upload目录下的子目录当中 String fileSaveRootPath=this.getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"upload"); @@ -48,27 +34,31 @@ public class DownLoadServlet extends HttpServlet { //得到要下载的文件 File file = new File(fileSaveRootPath + File.separator + fileName); //File file = new File(fileName); - System.out.print(file); + System.out.println(file); System.out.print("\n"); // 浏览器请求响应转码防止乱码 response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8"); //如果文件不存在 if(!file.exists()){ - setResultError("文件资源已被删除",writer); + request.setAttribute("message","wrong"); + request.getRequestDispatcher("/message.jsp").forward(request,response); return; } //处理文件名 String realname = fileName.substring(fileName.indexOf("_")+1); + System.out.println(realname); //设置响应头,控制浏览器下载该文件 - response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8")); + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); //读取要下载的文件,保存到文件输入流 FileInputStream in = new FileInputStream(fileSaveRootPath +File.separator+ fileName); + //创建输出流 OutputStream out = response.getOutputStream(); + //创建缓冲区 byte buffer[] = new byte[1024]; - int len = 0; + int len = 100; //循环将输入流中的内容读取到缓冲区当中 while((len=in.read(buffer))>0){ //输出缓冲区的内容到浏览器,实现文件下载 diff --git a/web/index.jsp b/web/index.jsp index 0b1828a..3ba2b96 100644 --- a/web/index.jsp +++ b/web/index.jsp @@ -6,6 +6,7 @@ To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%--<%@ taglib prefix=" " uri="http://java.sun.com/jsp/jstl/core"%>--%> $Title$