MOYUN(/Java/SQL/Linux/DevOps/运维/架构/管理/敏捷/开发)

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 1     public void doGet(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3         doPost(request, response);
 4     }
 5 
 6     @SuppressWarnings("deprecation")
 7     public void doPost(HttpServletRequest request, HttpServletResponse response)
 8             throws ServletException, IOException {
 9 
10 
11         String materia_url=request.getParameter("materia_url");
12         String str=request.getRealPath("/")+materia_url;
13     
14         try {
15             downLoad(str, response, false);
16         } catch (Exception e) {
17             
18             e.printStackTrace();
19         }
20         
21     }
    public void downLoad(String filePath,HttpServletResponse response,boolean isOnLine)
    throws Exception{
        
        File f = new File(filePath);
        if(!f.exists()){
            response.sendError(404,"---------File not found!");
            return;
        }
        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
        byte[] buf = new byte[1024];
        int len = 0;

        response.reset(); //非常重要
        if(isOnLine){ //在线打开方式
            URL u = new URL("file:///"+filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader("Content-Disposition", "inline; filename="+f.getName());
            //文件名应该编码成UTF-8
        }else{ //纯下载方式
            response.setContentType("application/x-msdownload"); 
            response.setHeader("Content-Disposition", "attachment; filename=" + f.getName()); 
        }
        
        OutputStream out = response.getOutputStream();
        while((len = br.read(buf)) >0)
            out.write(buf,0,len);
            br.close();
            out.close();
    } 

 

posted on 2014-04-16 14:37  moyun-  阅读(169)  评论(0)    收藏  举报