www.bersaty.com

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();
        
    }

 

posted @ 2013-07-19 15:12  bersaty  阅读(206)  评论(0)    收藏  举报