对象存储 OSS下载到流io.ReadCloser
详细解答可以参考官方帮助文档
提示:
下载的示例代码在sample/get_object.go。
下载文件到流
import (
'fmt'
'io/ioutil'
'github.com/aliyun/aliyun-oss-go-sdk/oss'
)
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
body, err := bucket.GetObject('my-object')
if err != nil {
// HandleError(err)
}
data, err := ioutil.ReadAll(body)
if err != nil {
// HandleError(err)
}
body.Close()
fmt.Println('data:', string(data))
注意:
io.ReadCloser数据读取完毕后,需要调用Close关闭。
下载文件到缓存
import (
'bytes'
'io'
'github.com/aliyun/aliyun-oss-go-sdk/oss'
)
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
body, err := bucket.GetObject('my-object')
if err != nil {
// HandleError(err)
}
buf := new(bytes.Buffer)
io.Copy(buf, body)
body.Close()
下载文件到本地文件流
import (
'io'
'os'
'github.com/aliyun/aliyun-oss-go-sdk/oss'
)
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
body, err := bucket.GetObject('my-object')
if err != nil {
// HandleError(err)
}
defer body.Close()
fd, err := os.OpenFile('LocalFile', os.O_WRONLY|os.O_CREATE, 0660)
if err != nil {
// HandleError(err)
}
defer fd.Close()
io.Copy(fd, body)
赞0
踩1