【发布时间】:2017-11-21 00:33:18
【问题描述】:
我正在尝试将照片上传到 Twitter。我创建了一个多部分编写器并使用该命名媒体创建了一个文件字段,但是当我将请求发送到 Twitter 时,它一直响应丢失的媒体字段。 我错过了什么吗? 这是我的代码
f, err := os.Open("/Users/nikos/Desktop/test.png")
errored:
if nil != err {
fmt.Println(err)
return
}
var img = new(bytes.Buffer)
enc := base64.NewEncoder(base64.StdEncoding, img)
_, err = io.Copy(enc, f)
if nil != err {
goto errored
}
body := new(bytes.Buffer)//Multipart body
writer := multipart.NewWriter(body)
cl, err := twitter.OauthClient.MakeHttpClient(&oauth.AccessToken{
Token: "xxx",
Secret: "yyy",
})
err = writer.WriteField("media_data", img.String())//base64 version of the image (i tried both binary and base64 versions neither will work)
if nil != err {
goto errored
}
part, err := writer.CreateFormFile("media", "test.png")//actual binary file multiparted and it is named media.
if nil != err {
goto errored
}
_, err = io.Copy(part, f)
if nil != err {
goto errored
}
req, err := http.NewRequest("POST",
"https://upload.twitter.com/1.1/media/upload.json",
body)
if nil != err {
goto errored
}
res, err := cl.Do(req)
if nil != err {
goto errored
}
//and twitter responds that there is no field attached named media
_, err = io.Copy(os.Stdout, res.Body)
fmt.Println(res)
if nil != err {
goto errored
}
【问题讨论】:
-
您看到的错误是什么?
-
@CeriseLimón 我一次发送一个,就在这里我把它们写在一起,但我会尝试关闭作者,如果我设置了内容类型,我会收到一个错误的请求错误,让我尝试关闭作者跨度>
-
@YandryPozo
{"errors":[{"code":38,"message":"media parameter is missing."}]}&{400 Bad Request 400这是我得到的错误
标签: go twitter multipartform-data multipart form-fields