一、准备
1、我们需要引入cos go sdk
需要引入腾讯云cos的sdk
https://github.com/tencentyun/cos-go-sdk-v5
2、编码
配置yaml如下:文章来源:https://www.toymoban.com/news/detail-504412.html
Cos:
SecretId: "xxx"
SecretKey: "xxx"
Domain: "https://你的.cos.ap-beijing.myqcloud.com"
Prefix: "桶前缀"
AppId: "xxx"
go代码编写如下:文章来源地址https://www.toymoban.com/news/detail-504412.html
func GetCosImg2Base64(string imgStr) (string, error) {
u, _ := url.Parse(l.svcCtx.Config.Cos.Domain)
b := &cos.BaseURL{BucketURL: u}
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
// 通过环境变量获取密钥
// 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretID: l.svcCtx.Config.Cos.SecretId,
// 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。
//子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: l.svcCtx.Config.Cos.SecretKey,
// 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。
//子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
// 因为数据库存的都是带所有前缀的:/桶前缀/itrarace/6734/xxx.gif
resp, err := client.Object.Get(context.Background(), imgStr, nil)
if err != nil {
//os.Exit(-1)
l.Logger.Errorf(err.Error())
return nil, xerr.NewErrCode(xerr.COS_DEL_SINGLE_ERROR)
}
defer resp.Body.Close()
var buf bytes.Buffer
_, err = io.Copy(&buf, resp.Body)
if err != nil {
l.Logger.Errorf(err.Error())
return nil, xerr.NewErrCode(xerr.COS_DEL_SINGLE_ERROR)
}
// 将图片转为 base64
//fmt.Println(resp.ContentLength)
//imageContent := make([]byte, resp.ContentLength)
复制响应的 Body 到文件中
//resp.Body.Read(imageContent)
imageBase64 := base64.StdEncoding.EncodeToString(buf.Bytes())
//fmt.Println(imageBase64)
return imageBase64, nil
}
到了这里,关于【golang】go获取腾讯云cos对象存储 并转为base64字符串输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!