在 Go 中执行预签名 POST 上传到 AWS S3
在本指南中,我们将深入研究执行预签名的细节- 使用 Go 签名 POST 上传到 AWS S3 存储桶。此方法不同于涉及 PUT 的更常见的预签名上传机制。
先决条件:
多部分表单数据构造和POST请求:
要启动上传,请准备包含策略中指定的所有字段的多部分表单数据请求,包括签名的策略文档、密钥和文件内容。使用多部分包的 CreateFormField 方法创建每个表单字段。
代码示例:
以下 Go 代码片段概述了该过程:
func Upload(url string, fields Fields) error { var b bytes.Buffer w := multipart.NewWriter(&b) for _, f := range fields { fw, err := w.CreateFormField(f.Key) if err != nil { return err } if _, err := fw.Write([]byte(f.Value)); err != nil { return err } } w.Close() req, err := http.NewRequest("POST", url, &b) if err != nil { return err } req.Header.Set("Content-Type", w.FormDataContentType()) client := &http.Client{} res, err := client.Do(req) if err != nil { return err } if res.StatusCode != http.StatusOK { err = fmt.Errorf("bad status: %s", res.Status) } return nil }
按照以下步骤,您可以使用预签名 POST 方法将文件无缝上传到 AWS S3 存储桶走吧。
以上是如何使用 Go 执行预签名 POST 上传到 AWS S3?的详细内容。更多信息请关注PHP中文网其他相关文章!