简介
对象存储
Go SDK
安装cos Go SDK:
go get -u github.com/tencentyun/cos-go-sdk-v5
预签名实现
查看
func main() {
u, err := url.Parse("") //自己桶的地址
if err != nil {
panic(err)
}
// 用于Get Service 查询,默认全地域 service.cos.myqcloud.com
su, err := url.Parse("https://cos.COS_REGION.myqcloud.com")
if err != nil {
panic(err)
}
b := &cos.BaseURL{BucketURL: u, ServiceURL: su}
// 1.永久密钥
secretID := "" //自己的SecretID
secretKey := "" //自己的SecretKey
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: secretID,
SecretKey: secretKey,
},
})
// 再腾讯云上的文件名
name := "Snipaste_2022-03-16_20-19-47.png"
// 获取预签名URL;URL有效期10分钟;通过GET方式查看
presignedURL, err := client.Object.GetPresignedURL(context.Background(), http.MethodGet, name, secretID, secretKey, 10*time.Minute, nil)
if err != nil {
panic(err)
}
fmt.Println(presignedURL)
}
通过以上代码,输出一个只有10分钟有效期的url;复制到浏览器进行查看
上传
func main() {
u, err := url.Parse("") //自己桶的地址
if err != nil {
panic(err)
}
// 用于Get Service 查询,默认全地域 service.cos.myqcloud.com
su, err := url.Parse("https://cos.COS_REGION.myqcloud.com")
if err != nil {
panic(err)
}
b := &cos.BaseURL{BucketURL: u, ServiceURL: su}
// 1.永久密钥
secretID := "" //自己的SecretID
secretKey := "" //自己的SecretKey
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: secretID,
SecretKey: secretKey,
},
})
// 上传时,参数名只能是abc.png
name := "abc.png"
// 获取预签名URL;URL有效期10分钟;通过PUT请求上传
presignedURL, err := client.Object.GetPresignedURL(context.Background(), http.MethodPut, name, secretID, secretKey, 10*time.Minute, nil)
if err != nil {
panic(err)
}
fmt.Println(presignedURL)
}
通过预签名URL进行上传
普通方式
查看
func main() {
u, err := url.Parse("") //自己桶的地址
if err != nil {
panic(err)
}
// 用于Get Service 查询,默认全地域 service.cos.myqcloud.com
su, err := url.Parse("https://cos.COS_REGION.myqcloud.com")
if err != nil {
panic(err)
}
b := &cos.BaseURL{BucketURL: u, ServiceURL: su}
// 1.永久密钥
secretID := "" //自己的SecretID
secretKey := "" //自己的SecretKey
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: secretID,
SecretKey: secretKey,
},
})
response, err := client.Object.Get(context.Background(), "28910f56de2344ecbe4d49bd9e40f18f", &cos.ObjectGetOptions{})
if response.Status == "200 OK" {
bytes, err := ioutil.ReadAll(response.Body)
if err != nil {
panic(err)
}
fmt.Println(bytes)
}
}
上传
func main() {
u, err := url.Parse("") //自己桶的地址
if err != nil {
panic(err)
}
// 用于Get Service 查询,默认全地域 service.cos.myqcloud.com
su, err := url.Parse("https://cos.COS_REGION.myqcloud.com")
if err != nil {
panic(err)
}
b := &cos.BaseURL{BucketURL: u, ServiceURL: su}
// 1.永久密钥
secretID := "" //自己的SecretID
secretKey := "" //自己的SecretKey
name := strings.ReplaceAll(uuid.New().String(),"-","",)
ctx := context.Background()
f := strings.NewReader("D:\\png\\Snipaste_2022-03-16_20-19-47.png")
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: secretID,
SecretKey: secretKey,
},
})
// 1. 通过普通方式上传对象
resp, err := client.Object.Put(ctx, name, f, nil)
if err != nil {
panic(err)
}
fmt.Println(resp.Status)
}