经过证实的下载文件java实现方法

//会弹出对话框让用户自己选择保存路径 

public static HttpServletResponse download(String path, HttpServletResponse response) {
     try {
         // path是指欲下载的文件的路径。
         File file = new File(path);
         // 取得文件名。
         String filename = file.getName();
         // 取得文件的后缀名。
         String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();

         // 以流的形式下载文件。
         InputStream fis = new BufferedInputStream(new FileInputStream(path));
         byte[] buffer = new byte[fis.available()];
         fis.read(buffer);
         fis.close();
         // 清空response
         response.reset();
         // 设置response的Header
         //response.setHeader("Content-disposition","attachment;filename="+"book.zip"); 
         response.addHeader("Content-Disposition", "inline;filename=" + new String(filename.getBytes()));
         response.addHeader("Content-Length", "" + file.length());
         OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
        
         response.setContentType("application/octet-stream");
         toClient.write(buffer);
         toClient.flush();
         toClient.close();
     } catch (IOException ex) {
         ex.printStackTrace();
     }
     return response;
 }
 //不会弹出保存对话筐
  public static void downloadNet(HttpServletResponse response,String desFilePath,String furl) throws MalformedURLException {
         // 下载网络文件
         int bytesum = 0;
         int byteread = 0;
         URL url = new URL(furl);

         try {
             URLConnection conn = url.openConnection();
             InputStream inStream = conn.getInputStream();
             FileOutputStream fs = new FileOutputStream(desFilePath);

             byte[] buffer = new byte[1204];
             int length;
             while ((byteread = inStream.read(buffer)) != -1) {
                 bytesum += byteread;
                 System.out.println(bytesum);
                 fs.write(buffer, 0, byteread);
             }
             fs.flush();//很重要
             fs.close();//很重要,否则下载的文件无法打开
            
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值