S3 GetObject返回内容但是从正文中读取不会填充缓冲区

时间:2017-02-09 15:31:42

标签: go amazon-s3

我使用go sdk从s3获取文件。 虽然响应表明ContentLength,但是从正文中读取的实际内容并没有填满我的缓冲区。

响应

{
AcceptRanges: "bytes",
Body: buffer(0xc0421d6cc0),
ContentEncoding: "utf-8",
ContentLength: 13,
ContentType: "application/json",
ETag: "\"a15ce1024b219fd76684ba1561d23ccc\"",
LastModified: 2017-02-09 15:16:45 +0000 UTC,
Metadata: {
}
}

var buf []byte

r, err := resp.Body.Read(buf)
if err != nil {
    return "", err
}
defer resp.Body.Close()

fmt.Printf("read %d, buff %d", r, len(buf))

"read 0, buff 0"

1 个答案:

答案 0 :(得分:3)

io.Reader需要切片才能读入。如果您没有提供任何缓冲区空间,则不会读取任何内容。

如果要将整个流读入内存,可以使用ioutil.ReadAll便利功能。