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