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
在使用Laravel中如果要进行复杂的查询,那么通过模型中的函数来查询是不行的,所以本文主要记录如何通过aggregate来进行复杂的查询。
如果在使用Gin框架编写web应用程序中,如果里面包含了模板文件和静态文件,我们如何进行打包呢?本文主要记录该操作。
最近关注流媒体服务器来做网络直播,本想使用阿里云的流媒体服务器,由于费用的问题还是想能否自己搭建一个流媒体服务器供自己测试使用。果不其然,Nginx居然如此强大,可以用来做流媒体服务器。本文将具体介绍流媒体服务器的搭建过程和使用过程。
Python调用WPS把文档转换PDF,并把PDF转图片,首先需要安装WPS,然后利用pypiwin32把文档转化成PDF,再利用fitz、PyMuPD把PDF转化成图片
Centos中用Chrome将网页导出为PDF,chrome --headless --print-to-pdf https://developer.chrome.com/
快速生成表格
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问题