天天看点

go语言实现腾讯云对象存储

简介

对象存储

Go SDK

安装cos Go SDK:

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

预签名实现

go语言实现腾讯云对象存储

查看

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;复制到浏览器进行查看

go语言实现腾讯云对象存储

上传

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进行上传

go语言实现腾讯云对象存储
go语言实现腾讯云对象存储

普通方式

查看

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)
	}
}
           
go语言实现腾讯云对象存储

上传

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)
}
           
go语言实现腾讯云对象存储
go语言实现腾讯云对象存储