gpt4 book ai didi

http - 我如何跟踪golang中的上传进度

转载 作者:IT王子 更新时间:2023-10-29 01:25:42 27 4
gpt4 key购买 nike

我正在尝试跟踪 GOLANG 中的上传进度,这就是我目前得到的

func Upload(w http.ResponseWriter, req *http.Request) {

mr, err := req.MultipartReader()
if err != nil {
return
}

for {
// var part *multipart.Part
part, err := mr.NextPart()
mr.partsRead

if err == io.EOF {
break
}
println(part)

}

}

最佳答案

这会起作用,一个stream来计算读取的字节数和你需要将stream指向某处的总进度,在这个代码示例中我将它指向一个文件.

func Upload(w http.ResponseWriter, req *http.Request) {

mr, err := req.MultipartReader()
if err != nil {
return
}
length := req.ContentLength
for {

part, err := mr.NextPart()
if err == io.EOF {
break
}
var read int64
var p float32
dst, err := os.OpenFile("dstfile", os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return
}
for {
buffer := make([]byte, 100000)
cBytes, err := part.Read(buffer)
if err == io.EOF {
break
}
read = read + int64(cBytes)
//fmt.Printf("read: %v \n",read )
p = float32(read) / float32(length) *100
fmt.Printf("progress: %v \n",p )
dst.Write(buffer[0:cBytes])
}
}
}

关于http - 我如何跟踪golang中的上传进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13452914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com