【发布时间】:2018-03-06 15:58:17
【问题描述】:
有没有办法获取包含二进制数据的 io.Reader,并将其读出 base64 编码。
我在 encoding/base64 中看到了
func NewDecoder(enc *Encoding, r io.Reader) io.Reader
但假设 io.Reader 数据是 base64 并返回一个 io.Reader 以将其解码为二进制。
和
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
它返回一个 io.Writer 以将二进制编码为 base64,但我需要使用 go-aws-sdk s3manage Uploader,它采用 io.Reader 接口。
uploader := s3manager.NewUploaderWithClient(svc)
_, err := uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: input,
})
input需要实现io.Reader接口
数据很大,所以我不想在编码之前将输入完全读入内存
【问题讨论】:
-
您可以通过实现Transformer 接口和围绕
base64.Encoding的包装器和调用NewReader 来做您想做的事情...但我自己没有尝试过,所以我不知道是否可行。 -
您似乎在寻找golang.org/pkg/io/#Pipe?
标签: amazon-web-services go base64