前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go操作腾讯云COS对象存储的简单使用案例

Go操作腾讯云COS对象存储的简单使用案例

作者头像
iginkgo18
修改2021-05-04 12:54:11
3.2K0
修改2021-05-04 12:54:11
举报
文章被收录于专栏:devops_k8sdevops_k8s
准备环境
安装Go环境

Golang:用于下载和安装 Go 编译运行环境,请前往 Golang 官网进行下载

安装SDK
代码语言:javascript
复制
go get -u github.com/tencentyun/cos-go-sdk-v5
准备腾讯云COS对象存储服务

新用户一元钱即可购买腾讯云六个月50G容量的对象存储,别说一元钱都没有?

请求示例

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

使用永久密钥

代码语言:javascript
复制
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}
创建存储桶
代码语言:javascript
复制
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)
	}
}
查询存储桶列表
代码语言:javascript
复制
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}
上传对象
代码语言:javascript
复制
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)
	}
}
查询对象列表
代码语言:javascript
复制
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
下载对象
代码语言:javascript
复制
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,纵有疾风起,人生不言弃!%    
删除对象
代码语言:javascript
复制
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)
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备环境
    • 安装Go环境
      • 安装SDK
        • 准备腾讯云COS对象存储服务
        • 请求示例
        • 创建存储桶
        • 查询存储桶列表
        • 上传对象
        • 查询对象列表
        • 下载对象
        • 删除对象
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档