dpoxk64080 2016-11-15 20:32
浏览 29
已采纳

转到http POST文件

I'm really new in Go and I have to integrate Zamzar in a Go microservice. I need to POST a file and a data type (string).

Doing a curl looks like this:

curl https://sandbox.zamzar.com/v1/jobs \ -u user:pass \ -X POST \ -F "source_file=@/tmp/portrait.gif" \ -F "target_format=png"

This is what I have so far:

client := &http.Client{}

req, err := http.NewRequest("GET", "https://sandbox.zamzar.com/v1/jobs", nil)

req.SetBasicAuth("user", "pass")

resp, err := client.Do(req)

if err != nil {
  fmt.Printf("Error : %s", err)
} else {
  fmt.Println(resp)
}

How can I send the target_format as a string and source_file as a file? I already have the file ([]byte)

  • 写回答

1条回答 默认 最新

  • dqrmkdu25623 2016-11-15 21:20
    关注

    Use multipart.Writer to create the request body:

     var buf bytes.Buffer
     mpw := multipart.NewWriter(&buf)
     w, err := mpw.CreateFormFile("source_file", "portrait.gif")
     if err != nil {
        // handle error
     }
     if _, err := w.Write(imageBytes); err != nil {
        // handle error
     }
     if err := mpw.WriteField("target_format", "png"); err != nil {
       // handle error
     }
     if err := mpw.Close(); err != nil {
        // handle error
     }
    
     req, err := http.NewRequest("GET", "https://sandbox.zamzar.com/v1/jobs", &buf)
     req.Header.Set("Content-Type", mpw.FormDataContentType())
    
     ... continue as before.
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?