15 March 2019

IMG-THUMBNAIL

Go http 如何发送 multipart/form-data

通过multipart/form-data提交数据

bodyBuf := &bytes.Buffer{}
bodyWriter := multipart.NewWriter(bodyBuf)
_ = bodyWriter.WriteField("param", string(param))
defer bodyWriter.Close()

req, err := http.NewRequest("POST", callbackUrl, bodyBuf)
if err != nil {
	return nil, err
}
req.Header.Set("Content-Type", bodyWriter.FormDataContentType())
req.WithContext(ctx)

resp, err := http.DefaultClient.Do(req)
if err != nil {
	return nil, err
}
defer resp.Body.Close()

Content-Type头很重要,丢了的话服务端无法正常解析。

通过 CreateFormFile 发送文件

multipart.Writer支持CreateFormFile,写入文件名就能实现上传文件了。

http 的 POST 方法可以通过 body 发送数据,而数据的编码格式是通过Content-Type来定义,常见的类型是What are all the possible values for HTTP “Content-Type” header?


原文链接:Go http 如何发送 multipart/form-data (发送文件)?,转载请注明来源!

EOF