说明:如果您在使用 SDK 时遇到函数或方法不存在等错误,请先将 SDK 升级到最新版再重试。
Golang:用于下载和安装 Go 编译运行环境,请前往 Golang 官网进行下载。
执行以下命令安装 COS Go SDK:
go get -u github.com/tencentyun/cos-go-sdk-v5
下面为您介绍如何使用 COS Go SDK 完成一个基础操作,如初始化客户端、创建存储桶、查询存储桶列表、上传对象、查询对象列表、下载对象和删除对象。
使用 COS 域名生成 COS GO 客户端 Client 结构。
func NewClient(uri *BaseURL, httpClient *http.Client) *Client
// BaseURL 访问各 API 所需的基础 URL
type BaseURL struct {
// 访问 bucket, object 相关 API 的基础 URL(不包含 path 部分): https://examplebucket-1250000000.cos.<Region>.myqcloud.com
BucketURL *url.URL
// 访问 service API 的基础 URL(不包含 path 部分): https://cos.<Region>.myqcloud.com
ServiceURL *url.URL
// 访问 Batch API 的基础 URL (不包含 path 部分): https://<UIN>.cos-control.<Region>.myqcloud.com
BatchURL *url.URL
// 访问 CI 的基础 URL (不包含 path 部分): https://examplebucket-1250000000.ci.<Region>.myqcloud.com
CIURL *url.URL
}
参数名称 | 参数描述 | 类型 | 是否必填 |
---|---|---|---|
BucketURL | 访问 bucket, object 相关 API 的基础 URL(不包含 path 部分) | string | 是 |
ServiceURL | 访问 service API 的基础 URL(不包含 path 部分) | string | 否 |
BatchURL | 访问 Batch API 的基础 URL (不包含 path 部分) | string | 否 |
CIURL | 访问 CI 的基础 URL (不包含 path 部分) | string | 否 |
// 将 examplebucket-1250000000 和 COS_REGION修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
// 用于Get Service 查询,默认全地域 service.cos.myqcloud.com
su, _ := url.Parse("https://cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u, ServiceURL: su}
// 1.永久密钥
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
// 2.临时密钥
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
SessionToken: "SECRETTOKEN",
},
})
if client != nil {
// 调用 COS 请求
}
说明:临时密钥生成和使用可参见 临时密钥生成及使用指引。
通过修改 BaseURL,可以直接使用自定义域名或者全球加速域名访问 COS。
// 使用全球加速域名访问COS
u, _ := url.Parse("http://<BucketName-APPID>.cos.accelerate.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
// 2.临时密钥
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
SessionToken: "SECRETTOKEN",
},
})
COS Go SDK 默认开启了文件上传 CRC64 检验。
注意:
- COS Go SDK 版本需要大于等于 v0.7.23。
- 强烈不建议用户关闭 CRC64 校验。
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
// 2.临时密钥
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
SessionToken: "SECRETTOKEN",
},
})
// 关闭 CRC64 校验
client.Conf.EnableCRC = false
package main
import (
"context"
"net/http"
"net/url"
"os"
"github.com/tencentyun/cos-go-sdk-v5"
)
func main() {
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
_, err := c.Bucket.Put(context.Background(), nil)
if err != nil {
panic(err)
}
}
package main
import (
"context"
"fmt"
"net/http"
"os"
"github.com/tencentyun/cos-go-sdk-v5"
)
func main() {
c := cos.NewClient(nil, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
s, _, err := c.Service.Get(context.Background())
if err != nil {
panic(err)
}
for _, b := range s.Buckets {
fmt.Printf("%#v\n", b)
}
}
package main
import (
"context"
"net/http"
"net/url"
"os"
"strings"
"github.com/tencentyun/cos-go-sdk-v5"
)
func main() {
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
// 对象键(Key)是对象在存储桶中的唯一标识。
// 例如,在对象的访问域名 `examplebucket-1250000000.cos.COS_REGION.myqcloud.com/test/objectPut.go` 中,对象键为 test/objectPut.go
name := "test/objectPut.go"
// 1.通过字符串上传对象
f := strings.NewReader("test")
_, err := c.Object.Put(context.Background(), name, f, nil)
if err != nil {
panic(err)
}
// 2.通过本地文件上传对象
_, err = c.Object.PutFromFile(context.Background(), name, "../test", nil)
if err != nil {
panic(err)
}
// 3.通过文件流上传对象
fd, err := os.Open("./test")
if err != nil {
panic(err)
}
defer fd.Close()
_, err = c.Object.Put(context.Background(), name, fd, nil)
if err != nil {
panic(err)
}
}
package main
import (
"context"
"fmt"
"net/http"
"net/url"
"os"
"github.com/tencentyun/cos-go-sdk-v5"
)
func main() {
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
opt := &cos.BucketGetOptions{
Prefix: "test",
MaxKeys: 3,
}
v, _, err := c.Bucket.Get(context.Background(), opt)
if err != nil {
panic(err)
}
for _, c := range v.Contents {
fmt.Printf("%s, %d\n", c.Key, c.Size)
}
}
package main
import (
"context"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"os"
"github.com/tencentyun/cos-go-sdk-v5"
)
func main() {
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
// 1.通过响应体获取对象
name := "test/objectPut.go"
resp, err := c.Object.Get(context.Background(), name, nil)
if err != nil {
panic(err)
}
bs, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
fmt.Printf("%s\n", string(bs))
// 2.获取对象到本地文件
_, err = c.Object.GetToFile(context.Background(), name, "exampleobject", nil)
if err != nil {
panic(err)
}
}
package main
import (
"context"
"net/http"
"net/url"
"os"
"github.com/tencentyun/cos-go-sdk-v5"
)
func main() {
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "SECRETID",
SecretKey: "SECRETKEY",
},
})
name := "test/objectPut.go"
_, err := c.Object.Delete(context.Background(), name)
if err != nil {
panic(err)
}
}
本页内容是否解决了您的问题?