From 1fd7e37234d1b9058526495bdc59b426570d4d18 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期一, 08 六月 2020 14:42:00 +0800 Subject: [PATCH] add shopConf --- 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..ee2f1da 100644 --- a/extend/util/requtil.go +++ b/extend/util/requtil.go @@ -4,9 +4,13 @@ "bytes" "encoding/json" "github.com/ajg/form" + "golang.org/x/tools/go/ssa/interp/testdata/src/fmt" + "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