猿问

如何将 aws.WriteAtBuffer 转换为 io.Reader?

我需要从 S3 下载文件,然后将相同的文件上传到不同的 S3 存储桶中。到目前为止我有:


sess := session.Must(session.NewSession())

downloader := s3manager.NewDownloader(sess)


buffer := aws.NewWriteAtBuffer([]byte{})


n, err := downloader.Download(buffer, &s3.GetObjectInput{

    Bucket: aws.String(sourceS3Bucket),

    Key:    aws.String(documentKey),

})


uploader := s3manager.NewUploader(sess)

result, err := uploader.Upload(&s3manager.UploadInput{

    Bucket: aws.String(targetS3Bucket),

    Key:    aws.String(documentKey),

    Body:   buffer,

})

我使用了 aws.WriteAtBuffer,

但是,我目前陷入了如何将此缓冲区视为实现 io.Reader 接口的问题,这是上传程序的 Upload 方法所需要的。


白猪掌柜的
浏览 92回答 1
1回答

扬帆大鱼

使用bytes.NewReader在缓冲区中的字节上创建 io.Reader :result, err := uploader.Upload(&s3manager.UploadInput{    Bucket: aws.String(targetS3Bucket),    Key:    aws.String(documentKey),    Body:   bytes.NewReader(buffer.Bytes()),})
随时随地看视频慕课网APP

相关分类

Go
我要回答