Golang下载文件显示进度条
简介如何在命令行中使用下载文件的进度条
如何在命令行中使用下载文件的进度条,在Golang中的实现如下:
安装依赖库
go get github.com/cheggaaa/pb/v3
代码实现
package main
import (
"github.com/cheggaaa/pb/v3"
"io"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
)
func main() {
url := "http://cdn.apifox.cn/download/apifox-win64-latest.zip"
//获取文件名称
urls := strings.Split(url, "/")
filename := urls[len(urls)-1]
client := http.DefaultClient
client.Timeout = 60 * 10 * time.Second
reps, err := client.Get(url)
if err != nil {
log.Panic(err.Error())
}
if reps.StatusCode == http.StatusOK {
//保存文件
file, err := os.Create(filename)
if err != nil {
log.Panic(err.Error())
}
defer file.Close() //关闭文件
//获取下载文件的大小
length := reps.Header.Get("Content-Length")
size, _ := strconv.ParseInt(length, 10, 64)
body := reps.Body //获取文件内容
bar := pb.Full.Start64(size)
bar.SetWidth(120) //设置进度条宽度
bar.SetRefreshRate(10 * time.Millisecond) //设置刷新速率
defer bar.Finish()
// create proxy reader
barReader := bar.NewProxyReader(body)
//写入文件
writer := io.Writer(file)
io.Copy(writer, barReader)
}
}
运行结果
> go run download.go
58.88 MiB / 58.88 MiB [-----------------------------------------------------------------------] 100.00% 11.46 MiB p/s 5s
Mysql in 多个字段的用法
Windows上搭建Flutter环境
图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色,则该卷积核内像素值不变,但若是既有黑色又有白色,即在图像边缘处,那么膨胀操作则会将该卷积核内所有白色像素点都赋值变为黑色,以此将图像向内腐蚀掉一圈,而膨胀操作则相反,会将卷积核内的黑色像素点赋值成2白色,以此让图像膨胀一圈。
Mysql二进制日志文件是非常重要,记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件,所以本文主要记录Mysql二进制文件如何开启和类型。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题