使用s3上传多个文件

时间:2017-12-08 17:55:56

标签: amazon-web-services go amazon-s3 aws-sdk-go

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

使用sdk,s3结构PutObjectInput期望Body的类型为io.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,
            })
    }
}

2 个答案:

答案 0 :(得分:1)

使用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,
        })

打开返回File。此类型满足io.ReadSeeker接口。

答案 1 :(得分:0)