검 은 창 아래 진도 표시 줄 이 있 는 http 다운로드

package main

import (
    "flag"
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
    "strconv"
    "strings"
    "time"

    "github.com/cheggaaa/pb"
)

var (
    url = flag.String("url", "", "The download file URL.")
)

func Usage() {
    fmt.Printf("Usage of %s:
  -url=\"http://www.xxx.com/file.exe\": The download file URL.
", os.Args[0])     os.Exit(1) } func main() {     flag.Parse()     if os.Args == nil || *url == "" {         Usage()     }     //  /     urlMap := strings.Split(*url, "/")     fileName := urlMap[len(urlMap)-1]     //  ? = fileName      if strings.Contains(fileName, "=") {         splitName := strings.Split(fileName, "=")         fileName = splitName[len(splitName)-1]     }     resp, err := http.Get(*url)     if err != nil {         log.Fatal(err)     }     //  get url , StatusOK = 200     if resp.StatusCode == http.StatusOK {         log.Printf("[INFO]  : [%s]", fileName)         fmt.Print("
")         downFile, err := os.Create(fileName)         if err != nil {             log.Fatal(err)         }         //  .         defer downFile.Close()         //          i, _ := strconv.Atoi(resp.Header.Get("Content-Length"))         sourceSiz := int64(i)         source := resp.Body         //          bar := pb.New(int(sourceSiz)).SetUnits(pb.U_BYTES).SetRefreshRate(time.Millisecond * 10)         //          bar.ShowSpeed = true         //          bar.ShowTimeLeft = true         //          bar.ShowFinalTime = true         bar.SetMaxWidth(80)         bar.Start()         writer := io.MultiWriter(downFile, bar)         io.Copy(writer, source)         bar.Finish()         fmt.Print("
")         log.Printf("[INFO] [%s] .", fileName)     } else {         fmt.Print("
")         log.Printf("[ERROR] [%s] ,%s.", fileName, resp.Status)     } }

좋은 웹페이지 즐겨찾기