在golang中发送图像而不下载它

时间:2018-04-10 21:21:02

标签: file post go request

问题是什么

我有一个带有图片的网址,我想在帖子请求中发送图片。有没有办法在不在本地下载文件的情况下执行此操作?

我尝试了什么

通常我会下载图像,发送图像并删除文件。还有更好的方法吗?

  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)

1 个答案:

答案 0 :(得分:2)

您不需要创建临时文件。请注意,http.Request需要io.Reader(或io.ReadCloser),并且由于response.Bodyio.ReadCloser,因此您可以直接从现有的HTTP响应正文中读取你以前的请求。

req, err := http.NewRequest("POST", url, response.Body)

对于分段上传,您只需直接从原始HTTP GET请求的响应正文向您正在使用的编写者调用multipart.CreatePart()然后io.Copy()。你还不需要临时档案。