详情页标题前

腾讯云对象存储快速入门

详情页1

下载与安装

相关资源

对象存储 COS 的 XML Go SDK 源码下载地址:XML Go SDK示例 Demo 下载地址:COS XML Go SDK 示例更多信息请参见 COS Go SDK API 文档SDK 文档中的所有示例代码请参见 SDK 代码示例SDK 更新日志请参见 ChangeLogSDK 常见问题请参见:Go SDK 常见问题说明 如果您在使用 SDK 时遇到函数或方法不存在等错误,请先将 SDK 升级到最新版再重试。

环境依赖

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

安装 SDK

执行以下命令安装 COS Go SDK:

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

开始使用

下面为您介绍如何使用 COS Go SDK 完成一个基础操作,如初始化客户端、创建存储桶、查询存储桶列表、上传对象、查询对象列表、下载对象和删除对象。

初始化

注意建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引原则,防止泄漏目标存储桶或对象之外的资源。如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。使用 COS 域名生成 COS GO 客户端 Client 结构。

方法原型

func NewClient(uri *BaseURL, httpClient *http.Client) *Client

参数说明

// BaseURL 访问各 API 所需的基础 URLtype BaseURL struct {    // 访问 bucket, object 相关 API 的基础 URL(不包含 path 部分): https://examplebucket-1250000000.cos..myqcloud.com    BucketURL *url.URL    // 访问 service API 的基础 URL(不包含 path 部分): https://cos..myqcloud.com    ServiceURL *url.URL    // 访问 Batch API 的基础 URL (不包含 path 部分): https://.cos-control..myqcloud.com    BatchURL *url.URL    // 访问 CI 的基础 URL (不包含 path 部分): https://examplebucket-1250000000.ci..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

请求示例1:使用永久密钥

// 将 examplebucket-1250000000 和 COS_REGION 修改为用户真实的信息// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket// COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224u, _ := url.Parse("https://examplebucket-1250000000.cos.COS_REGION.myqcloud.com")// 用于 Get Service 查询,默认全地域 service.cos.myqcloud.comsu, _ := 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:  os.Getenv("SECRETID"),  // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140        SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140    },})

请求示例2:使用临时密钥

// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket// COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224u, _ := 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{        // 如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048        SecretID:     "SECRETID",        SecretKey:    "SECRETKEY",        SessionToken: "SECRETTOKEN",    },})if client != nil {    // 调用 COS 请求}

说明 临时密钥生成和使用可参见 临时密钥生成及使用指引

请求示例3:设置域名

通过修改 BaseURL,可以直接使用自定义域名或者全球加速域名访问 COS。

// 使用全球加速域名访问COSu, _ := url.Parse("http://.cos.accelerate.myqcloud.com")b := &cos.BaseURL{BucketURL: u}// 2.临时密钥client := cos.NewClient(b, &http.Client{    Transport: &cos.AuthorizationTransport{        // 如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048        SecretID:     "SECRETID",        SecretKey:    "SECRETKEY",        SessionToken: "SECRETTOKEN",    },})

请求示例4:CRC64校验

COS Go SDK 默认开启了文件上传 CRC64 检验。注意COS Go SDK 版本需要大于等于 v0.7.23。强烈建议用户不关闭 CRC64 校验。

// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息// 存储桶名称,由 bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket// COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224u, _ := 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{        // 如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048        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 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 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: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, })

_, 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: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, })

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 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 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: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, }) // 对象键(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 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 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: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, })

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 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 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: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, }) // 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 修改为真实的信息 // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket // COS_REGION 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket, 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 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: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140 }, }) name := "test/objectPut.go" _, err := c.Object.Delete(context.Background(), name) if err != nil { panic(err) }}



对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/145574.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 数据库PolarDB8.0集群版,会造成用户端连接断开的情况,有什么办法解决?-云小二-阿里云

    请问,我们的数据库PolarDB8.0集群版,开启了serverless功能,但在弹出回缩节点时,会造成用户端连接断开的情况,有什么办法解决? 以下为热心网友提供的参考意见 14:09:04 有一个,原因是缩容的时候,从缩容的RO,读到了一半数据结果,导致断联。14:07:44也有一个,原因也是一样,连接保持现在不能保证100%,这种从异常的RO读取结果一半…

    2023年12月28日
  • 把polardb的repmgr的插件,安装到template1模板库了,会对高可用产生影响吗?-云小二-阿里云

    把polardb的repmgr的插件,安装到template1模板库了,这样导致新建的数据库都有这个插件和模式了,我现在从新建的库中卸载这个插件,会对高可用产生影响吗? 以下为热心网友提供的参考意见 卸载插件不会对高可用性产生直接影响。当您从新建的数据库中卸载插件时,只会影响该特定数据库,而不会影响其他数据库或整个高可用环境。 然而,需要注意的是,如果您在多…

    阿里云 2024年1月4日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云Serverless应用中心部署全景录制-同尘科技

    使用场景 快速生成回放文件 直播回放可以将优质资源的价值进行放大,降低优质资源的成本,从而提升收益,通过全景录制功能可以在用户的视角将上课的内容实时录制下来,课程结束之后可以根据 Serverless 庞大的算力池快速转码,形成录制文件,实时生成回放。 精彩瞬间 家长很少有时间全程观看孩子的上课视频,通过精彩瞬间可以将孩子上课过程精彩表现呈现给家长,提升家长…

    2023年12月9日
  • 腾讯云对象存储PUT Object acl

    功能描述 PUT Object acl 接口用来写入对象的访问控制列表(ACL),您可以通过请求头x-cos-acl和x-cos-grant-*传入 ACL 信息,或者通过请求体以 XML 格式传入 ACL 信息。注意通过请求头设置 ACL 和通过请求体设置 ACL,两种方式只能选择其中一种。PUT Object acl 是一个覆盖操作,传入新的 ACL 将…

    腾讯云 2023年12月9日
  • 腾讯云对象存储管道操作符

    功能概述 对象存储通过数据万象的管道操作符|实现对图片按顺序进行多种处理。用户可以通过管道操作符将多个处理参数分隔开,从而实现在一次访问中按顺序对图片进行不同处理。处理图片原图大小不超过32MB、宽高不超过50000像素且总像素不超过2.5亿像素,处理结果图宽高设置不超过50000像素;针对动图,原图宽 x 高 x 帧数不超过2.5亿像素。注意 图片处理功能…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。