使用 s3 上传多个文件

Multiple file upload using s3

我想通过 aws golang sdk 将文件上传到我的 s3 存储桶。我有一个网络服务器正在侦听 POST 请求,我希望收到任何类型的多个文件。

使用 sdk,s3 结构 PutObjectInput 期望 Bodyio.ReadSeeker 类型,我不确定如何从上传的文件中提取内容满足io.ReadSeeker接口

images := r.MultipartForm.File

for _, files := range images {
    for _, f := range files {

        # In my handler, I can loop over the files
        # and see the content
        fmt.Println(f.Header)

        _, err = svc.PutObjectWithContext(ctx, &s3.PutObjectInput{
                Bucket: aws.String("bucket"),
                Key:    aws.String("key"),
                Body:   FILE_CONTENT_HERE,
            })
    }
}

使用FileHeader.Open方法得到一个io.ReadSeeker

    f, err := f.Open()
    if err != nil {
       // handle error
    }

    _, err = svc.PutObjectWithContext(ctx, &s3.PutObjectInput{
            Bucket: aws.String("bucket"),
            Key:    aws.String("key"),
            Body:   f,
        })

打开returns一个File. This type satisfies the io.ReadSeeker界面。

使用 S3 管理器的 Uploader.Upload 方法,http://docs.aws.amazon.com/sdk-for-go/api/service/s3/s3manager/#Uploader.Upload. We have an example at http://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-operations.html#s3-examples-bucket-ops-upload-file-to-bucket