快速入门

最近更新时间:2018-12-13 19:27:01

开发准备

相关资源

对象存储 COS 的 XML Go SDK 资源下载地址:XML Go SDK。更多信息请参见 COS Go SDK API 文档

环境依赖

Golang 用于下载和安装 Go 编译运行环境。Go 安装完毕后新建系统变量 GOPATH,并将其指向您的代码目录。

说明:关于文章中出现的 SecretId、SecretKey、Bucket 等名称的含义和获取方式请参考:COS 术语信息

安装 SDK

执行以下命令安装 COS Go SDK:

  1. go get -u github.com/tencentyun/cos-go-sdk-v5/

快速入门

本节介绍如何快速使用 COS Go SDK 完成常见操作,如客户端初始化、创建 Bucket、上传文件和下载文件。各 API 在 example 目录下有对应的使用示例。

初始化客户端

使用 COS 域名生成 COS GO 客户端 Client 结构。

方法原型

  1. func NewClient(uri *BaseURL, httpClient *http.Client) *Client

请求示例

  1. //将<bucketname>、<appid>和<region>修改为真实的信息
  2. //例如:http://test-1253846586.cos.ap-guangzhou.myqcloud.com
  3. u, _ := url.Parse("http://<bucketname>-<appid>.cos.<region>.myqcloud.com")
  4. b := &cos.BaseURL{BucketURL: u}
  5. client := cos.NewClient(b, &http.Client{
  6. Transport: &cos.AuthorizationTransport{
  7. //填写用户账号密钥信息,也可以设置为环境变量
  8. SecretID: os.Getenv("COS_SECRETID"),
  9. SecretKey: os.Getenv("COS_SECRETKEY"),
  10. },
  11. })

参数说明

  1. type AuthorizationTransport struct {
  2. SecretID string
  3. SecretKey string
  4. SessionToken string
  5. // 签名多久过期
  6. Expire time.Duration
  7. }

返回结果说明

返回的 Client 中包含 Service、Bucket 和 Object 结构,这些结构用于调用各自 API 函数。为简化描述,在 SDK 接口文档示例中省略 Client 初始化过程。

创建存储桶

  1. package main
  2. import (
  3. "context"
  4. "io/ioutil"
  5. "net/http"
  6. "net/url"
  7. "os"
  8. "time"
  9. "github.com/tencentyun/cos-go-sdk-v5"
  10. )
  11. func main() {
  12. //将<bucketname>、<appid>和<region>修改为真实的信息
  13. //例如:http://test-1253846586.cos.ap-guangzhou.myqcloud.com
  14. u, _ := url.Parse("http://<bucketname>-<appid>.cos.<region>.myqcloud.com")
  15. b := &cos.BaseURL{BucketURL: u}
  16. c := cos.NewClient(b, &http.Client{
  17. Transport: &cos.AuthorizationTransport{
  18. //如实填写账号和密钥,也可以设置为环境变量
  19. SecretID: os.Getenv("COS_SECRETID"),
  20. SecretKey: os.Getenv("COS_SECRETKEY"),
  21. },
  22. })
  23. _, err := c.Bucket.Put(context.Background(), nil)
  24. if err != nil {
  25. panic(err)
  26. }
  27. }

上传文件

  1. package main
  2. import (
  3. "context"
  4. "net/url"
  5. "os"
  6. "strings"
  7. "net/http"
  8. "github.com/tencentyun/cos-go-sdk-v5"
  9. )
  10. func main() {
  11. //将<bucketname>、<appid>和<region>修改为真实的信息
  12. //例如:http://test-1253846586.cos.ap-guangzhou.myqcloud.com
  13. u, _ := url.Parse("http://<bucketname>-<appid>.cos.<region>.myqcloud.com")
  14. b := &cos.BaseURL{BucketURL: u}
  15. c := cos.NewClient(b, &http.Client{
  16. Transport: &cos.AuthorizationTransport{
  17. //如实填写账号和密钥,也可以设置为环境变量
  18. SecretID: os.Getenv("COS_SECRETID"),
  19. SecretKey: os.Getenv("COS_SECRETKEY"),
  20. },
  21. })
  22. //对象键(Key)是对象在存储桶中的唯一标识。
  23. //例如,在对象的访问域名 ` bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/test/objectPut.go ` 中,对象键为 test/objectPut.go
  24. name := "test/objectPut.go"
  25. //Local file
  26. f := strings.NewReader("test")
  27. _, err := c.Object.Put(context.Background(), name, f, nil)
  28. if err != nil {
  29. panic(err)
  30. }
  31. }

下载文件

  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "net/url"
  6. "os"
  7. "io/ioutil"
  8. "net/http"
  9. "github.com/tencentyun/cos-go-sdk-v5"
  10. )
  11. func main() {
  12. //将<bucketname>、<appid>和<region>修改为真实的信息
  13. //例如:http://test-1253846586.cos.ap-guangzhou.myqcloud.com
  14. u, _ := url.Parse("http://<bucketname>-<appid>.cos.<region>.myqcloud.com")
  15. b := &cos.BaseURL{BucketURL: u}
  16. c := cos.NewClient(b, &http.Client{
  17. Transport: &cos.AuthorizationTransport{
  18. //如实填写账号和密钥,也可以设置为环境变量
  19. SecretID: os.Getenv("COS_SECRETID"),
  20. SecretKey: os.Getenv("COS_SECRETKEY"),
  21. },
  22. })
  23. //Object key
  24. name := "test/hello.txt"
  25. resp, err := c.Object.Get(context.Background(), name, nil)
  26. if err != nil {
  27. panic(err)
  28. }
  29. bs, _ := ioutil.ReadAll(resp.Body)
  30. resp.Body.Close()
  31. fmt.Printf("%s\n", string(bs))
  32. }