登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-02-25 12:36:20 336浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何将 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,按照此处的答案:https://stackoverflow.com/a/48254996/504055

但是,我目前困惑于如何将此缓冲区视为实现 io.reader 接口的东西,这是上传器的 upload 方法所需要的。


解决方案


使用bytes.NewReaderbytes in the buffer上创建一个io.reader:

result, err := uploader.Upload(&s3manager.UploadInput{
    Bucket: aws.String(targetS3Bucket),
    Key:    aws.String(documentKey),
    Body:   bytes.NewReader(buffer.Bytes()),
})

今天关于《如何将 aws.WriteAtBuffer 转换为 io.Reader 接口?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>