簡體   English   中英

如何將 aws.WriteAtBuffer 轉換為 io.Reader?

[英]How to convert aws.WriteAtBuffer to an 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.NewReader 在緩沖區中的字節上創建 io.Reader :

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM