开发者社区> 问答> 正文

对象存储 OSS下载到流io.ReadCloser

已解决

展开
收起
2017-12-31 17:53:28 1167 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    提示:

    • 下载的示例代码在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)
    
    2018-01-07 01:31:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载