1

我想通过 aws golang sdk 将文件上传到我的 s3 存储桶。我有一个监听 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,
            })
    }
}
4

2 回答 2

2

使用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接口。

于 2017-12-08T18:04:57.967 回答