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