Files
PandaX/base/oss/tencentyun.go
2022-01-13 17:48:45 +08:00

68 lines
1.5 KiB
Go

package oss
import (
"context"
"net/http"
"net/url"
"github.com/pkg/errors"
"github.com/tencentyun/cos-go-sdk-v5"
)
//oss 上传配置
type TencentConfig struct {
SecretID string
SecretKey string
bucket string
}
func (t *TencentConfig) CreateClient() *cos.Client {
// 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
u, _ := url.Parse(t.bucket)
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: t.SecretID,
SecretKey: t.SecretKey,
},
})
return c
}
type tencentOss struct {
client *cos.Client
}
func NewTencentOss(c TencentConfig) *tencentOss {
client := c.CreateClient()
return &tencentOss{
client: client,
}
}
func (t *tencentOss) Put(objectName, localFileName string) error {
// 通过本地文件上传对象
_, err := t.client.Object.PutFromFile(context.Background(), objectName, localFileName, nil)
if err != nil {
return errors.Wrapf(err, "tencentOss put fail")
}
return nil
}
func (t *tencentOss) Get(objectName, downloadedFileName string) error {
// 获取对象到本地文件
_, err := t.client.Object.GetToFile(context.Background(), objectName, downloadedFileName, nil)
if err != nil {
return errors.Wrapf(err, "tencentOss get fail")
}
return nil
}
func (t *tencentOss) Del(objectName string) error {
_, err := t.client.Object.Delete(context.Background(), objectName)
if err != nil {
return errors.Wrapf(err, "tencentOss del fail")
}
return nil
}