准備環境
安裝Go環境
Golang:用於下載和安裝 Go 編譯運行環境,請前往 Golang 官網進行下載
安裝SDK
go get -u github.com/tencentyun/cos-go-sdk-v5
准備騰訊雲COS對象存儲服務
新用戶一元錢即可購買騰訊雲六個月50G容量的對象存儲,別說一元錢都沒有😀
請求示例
使用COS域名生成 COS GO 客戶端 Client 結構
使用永久密鑰
package main
import (
"fmt"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
)
// 請求示例,使用永久密鑰
func main() {
u, _ := url.Parse("cos_url")
b := &cos.BaseURL{BucketURL: u}
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: secretid,
SecretKey: secretkey,
},
})
fmt.Println(client)
}
// 輸出
&{0xc00007eea0 cos-go-sdk-v5/0.7.7 0xc00000e380 {0xc00010e2a0} 0xc00010e2d0 0xc00010e2d0 0xc00010e2d0 0xc00010e2d0}
創建存儲桶
package main
import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
)
var secretid string = "AKIDe75eCTxIpqhjT9Iyyi5CPMIyNYR0E8gC"
var secretkey string = "mIYYHkJbomVyCB0sSmqeCKHyjW6HCrG2"
var cos_url string ="https://soft-1259174039.cos.ap-beijing.myqcloud.com"
func main() {
u, _ := url.Parse("cos_url")
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"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
)
var secretid string = "AKIDe75eCTxIpqhjT9Iyyi5CPMIyNYR0E8gC"
var secretkey string = "mIYYHkJbomVyCB0sSmqeCKHyjW6HCrG2"
var cos_url string ="https://soft-1259174039.cos.ap-beijing.myqcloud.com"
func main() {
u, _ := url.Parse("cos_url")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &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.Println("%#v\n",b)
}
}
// %#v
// {soft-1259174039 ap-beijing 2020-07-23T09:25:40Z}
上傳對象
package main
import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
"strings"
)
func main() {
u, _ := url.Parse("cos_url")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: "secretid",
SecretKey: "secretkey",
},
})
name := "test/objectPut.go"
// 1. 通過字符串上傳對象
f := strings.NewReader("test")
//
_,err := c.Object.Put(context.Background(),name,f,nil)
if err != nil{
panic(err)
}
// 上傳本地文件
_, err = c.Object.PutFromFile(context.Background(),name,"/Users/youmen/a/test.txt",nil)
if err != nil {
panic(err)
}
}
查詢對象列表
package main
import (
"context"
"fmt"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("cos_url")
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.Println("%s,%d\n",c.Key,c.Size)
}
}
//%s,%d
// test/objectPut.go 43
下載對象
package main
import (
"context"
"fmt"
"github.com/tencentyun/cos-go-sdk-v5"
"io/ioutil"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("cos_url")
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.Println("%s\n",string(bs))
// 2.獲取對象到本地文件
_,err = c.Object.GetToFile(context.Background(),name,"exampleobject",nil)
if err != nil{
panic(err)
}
}
//%s
// HelloWorld,縱有疾風起,人生不言棄!
// 我們去查看之前上傳的文件內容
// cat /Users/youmen/a/test.txt
// HelloWorld,縱有疾風起,人生不言棄!%
刪除對象
package main
import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("cos_url")
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)
}
}