问题是什么
我有一个包含图像的网址,我想在发布请求中发送该图像。有没有办法不用在本地下载文件就可以做到这一点?
我尝试了什么
通常我会下载图像,发送图像,然后删除文件。有更好的办法吗?
response, e := http.Get(url)
if e != nil {
log.Fatal(e)
}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile(paramName, filepath.Base(path))
if err != nil {
return nil, err
}
_, err = io.Copy(part, file)
最佳答案
您不需要创建临时文件。请记住,http.Request
需要一个 io.Reader
(或 io.ReadCloser
),并且由于 response.Body
> 是一个 io.ReadCloser
,它会很乐意直接从您先前请求的现有 HTTP 响应正文中读取。
req, err := http.NewRequest("POST", url, response.Body)
对于分段上传,您只需调用 multipart.CreatePart()
,然后直接从原始 HTTP GET 请求的响应正文中调用 io.Copy()
即可您正在使用的作家。您仍然不需要临时文件。
关于file - 在golang中发送图像而不下载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763031/