把整个文件读到 buf 里,当文件很大时,就会占用很多内存。在 golang 里可以使用io.Pipe 来优化内存占用
r, w := io.Pipe()
m := multipart.NewWriter(w)
go func() {
defer w.Close()
defer m.Close()
part, err := m.CreateFormFile(“myFile”, “foo.txt”)
if err != nil {
return
}
file, err := os.Open(name)
if err != nil {
return
}
defer file.Close()
if _, err = io.Copy(part, file); err != nil {
return
}
}()
http.Post(url, m.FormDataContentType(), r)
https://golangnote.com/topic/246.html
对于上百兆的文件读取,应采取分片读取的方式,代码如下:
//GO 发送http请求:
resp,err := http.post(URL, “application/json”, bytes.NewReader(buf))
if err!=nil{
fmt.Println(“err”,err)
}
http://www.jquerycn.cn/a_42438