java簡單的文件下載

   很多時候業務中會用到文件下載什麼的, 有些方法可能需要一些前端的文件下載組件什麼的, 相對比較複雜,在這裏只講一種非常簡單的文件下載,   但是這個方法有點小要求,  就是要下載的文件必須已經存在  並且存在服務器本地.

 

    /**
     * 文件下載,  
     * 注:  只需要改文件名和文件路徑  其他的完全複製粘貼即可使用哦. 
     * @param req
     * @param res
     * @throws Exception
     */
    public void downLoad(HttpServletRequest req,HttpServletResponse res) throws Exception{
        
        //一般此方法和生成文件到本地的方法是配套的,一起用,  一個生成, 一個下載
        //生成並下載文件的流程, 就是先生成文件到服務器本地,然後再將服務器下載到 客戶所在地, 用的是瀏覽器的默認下載位置.
        
        String filename = "文件名.xls";//注意 : 這裏是全文件名要加上文件名後綴, 不然會是無法識別的文件哦,
        String filepath = "D:/wrwExcel";//設置文件所在的路徑
       
        req.setCharacterEncoding("UTF-8");//這一句是爲了防止中文亂碼   ,需要拋出異常 ,隨便拋個啦
        //第一步:設置響應類型
        res.setContentType("application/force-download");//應用程序強制下載
       
        InputStream in = new FileInputStream(filepath+filename);//通過路徑讀取文件
        //解決下載文件時 文件名中文亂碼
        filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");  
        res.setHeader("Content-Disposition", "attachment;filename="+filename);   
        res.setContentLength(in.available());
        
        //第三步:老套路,開始copy
        OutputStream out = res.getOutputStream();
        byte[] b = new byte[1024];
        int len = 0;
        while((len = in.read(b))!=-1){
          out.write(b, 0, len);
        }
        out.flush();
        out.close();
        in.close();
        
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章