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

标签 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)

最佳答案

您不需要创建临时文件。请记住,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/

相关文章:

javascript - 使用 Typescript 将数组写入文本文件并换行

sockets - lua 套接字 POST

go - goroutine语句执行和函数执行的不同行为

tomcat - 无法使用 POSTMAN 将数据发布到 Apache tomcat 服务器

php - 更改文件(图像)输入ajax无法发布文件

c - C 和 GO 之间的图像大小不匹配

go - 使用 golang 在 google-cloud 数据存储中仅检索具有 key 的特定属性

c++ - 无法成功比较字符串

ruby - 将文件中的字节数据读入多个整数

javascript - 使用JavaScript(Electron/node.js)检查文件中是否已经存在一行