mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-27 14:19:38 +08:00
68 lines
1.5 KiB
Go
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
|
|
}
|