【发布时间】:2017-01-24 06:11:57
【问题描述】:
我正在向 API 发送 POST 请求,并使用第三方库 (https://github.com/cheggaaa/pb),但我的上传进度条将在文件传输实际完成之前完成。
package main
import(
pb "gopkg.in/cheggaaa/pb.v1"
"net/http"
)
func main() {
file, e := os.Open(path)
if e != nil {
log.Fatal()
}
defer file.Close()
bar := pb.New(int(fi.Size()))
bar.Start()
req, err := http.NewRequest("POST", url, body)
resp, err := client.Do(req)
bar.Finish()
return
}
开始于
12.64 MB / 12.64 MB [======================] 100.00% 12.59 MB/s 0s
完成后转到:
12.64 MB / 12.64 MB [======================] 100.00% 626.67 KB/s 20s
这是因为 HTTP Req 处理程序正在将文件读入内存并增加进度条吗?我错过了什么?
我查看了这篇文章 (Go: Tracking POST request progress),但我看不出它与我正在使用的库有何不同。我以前尝试过使用io.Copy 到一个缓冲区,进度条阅读器从中读取,但是一旦发送请求,它就会做同样的事情。
【问题讨论】:
-
您的代码不完整。请提供Minimal, Complete, and Verifiable example。
标签: http post go progress-bar httprequest