From 9303b69ea569bcb5e581147543a3fd58e90d0d25 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期四, 20 八月 2020 20:05:23 +0800
Subject: [PATCH] add get buckets contrl

---
 extend/util/requtil.go |   49 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 48 insertions(+), 1 deletions(-)

diff --git a/extend/util/requtil.go b/extend/util/requtil.go
index 203d21f..ab197ea 100644
--- a/extend/util/requtil.go
+++ b/extend/util/requtil.go
@@ -3,10 +3,14 @@
 import (
 	"bytes"
 	"encoding/json"
+	"fmt"
 	"github.com/ajg/form"
+	"io"
 	"io/ioutil"
 	"net/http"
+	"os"
 	"strings"
+	"github.com/dustin/go-humanize"
 )
 
 const (
@@ -70,4 +74,47 @@
 		return resultBytes, err
 	}
 	return resultBytes, nil
-}
\ No newline at end of file
+}
+
+
+type WriteCounter struct {
+	Total  uint64
+}
+
+func (wc WriteCounter) PrintProgress() {
+	fmt.Printf("\r%s", strings.Repeat(" ", 35))
+	fmt.Printf("/rDownloading... %s complete", humanize.Bytes(wc.Total))
+}
+
+func (wc *WriteCounter) Write(p []byte) (int, error) {
+	n := len(p)
+	wc.Total = uint64(n)
+	wc.PrintProgress()
+	return n, nil
+}
+
+//涓嬭浇鏂囦欢
+func DownloadFile(fPath string, url string) error {
+	f, err := os.Create(fPath)
+	if err != nil {
+		return err
+	}
+	resp, err := http.Get(url)
+	if err != nil {
+		f.Close()
+		return err
+	}
+	defer resp.Body.Close()
+	counter := &WriteCounter{}
+	if _, err = io.Copy(f, io.TeeReader(resp.Body, counter)); err != nil {
+		f.Close()
+		return err
+	}
+	fmt.Printf("\n")
+	f.Close()
+	if err = os.Rename(fPath, fPath);err != nil {
+		return err
+	}
+	return nil
+}
+

--
Gitblit v1.8.0