我需要下载图片并将其上传到其他服务上。是否可以上传它而不将其保存在磁盘上?我检查了go docs,但我找不到任何简单的方法,甚至不能从磁盘上传/发布多个部分。 到目前为止,我有这个不工作的代码
func upf(file []byte) (url string, err error) {
URL := "http:///max.com/upimg"
b := bytes.Buffer
writer := multipart.NewWriter(b)
part, err := writer.CreateFormField(file)
if err != nil {
return nil, err
}
err = writer.Close()
if err != nil {
return nil, err
}
return http.NewRequest("POST", URL, b)
}
答案 0 :(得分:4)
response, error := http.Get("http://another.service.com/image.jpg")
if error != nil {
// handle error
}
_, error = http.Post("http://max.com/upimg", "image/jpg", response.Body)
if error != nil {
// handle error
}
如果您需要发布多部分,则必须对响应的正文进行编码;
buffer := bytes.NewBuffer(nil)
encoder := multipart.NewWriter(buffer)
field, error := encoder.CreateFormField("image") // Set "image" to correct field name
if error != nil {
// handle error
}
_, error = io.Copy(field, response.Body)
if error != nil {
// handle error
}
// and then Post buffer instead of response.Body
请记住在POST请求中设置正确的Content-Type
标头(例如http.Post的第二个参数),如下所示:
"multipart/form-data; boundary=" + encoder.Boundary()