有没有一种方法可以将包含二进制数据的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
这里有一个返回用于将二进制编码为base64的io.Writer函数,但我需要使用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,
})
输入需要实现 io.Reader 接口
数据很大,因此在进行编码之前,我不想将输入完全读入内存
base64.Encoding
上包装一个 Transformer 接口并调用 NewReader 来实现你想要的功能... 但我自己没有尝试过,所以不确定它是否可行。 - mkopriva