|
|
@ -0,0 +1,60 @@ |
|
|
|
package upload |
|
|
|
|
|
|
|
import ( |
|
|
|
"context" |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"gin-vue-admin/global" |
|
|
|
"mime/multipart" |
|
|
|
"net/http" |
|
|
|
"net/url" |
|
|
|
"time" |
|
|
|
|
|
|
|
"github.com/tencentyun/cos-go-sdk-v5" |
|
|
|
"go.uber.org/zap" |
|
|
|
) |
|
|
|
|
|
|
|
type TencentCOS struct{} |
|
|
|
|
|
|
|
// UploadFile upload file to COS
|
|
|
|
func (*TencentCOS) UploadFile(file *multipart.FileHeader) (string, string, error) { |
|
|
|
c := NewClient() |
|
|
|
f, openError := file.Open() |
|
|
|
if openError != nil { |
|
|
|
global.GVA_LOG.Error("function file.Open() Filed", zap.Any("err", openError.Error())) |
|
|
|
|
|
|
|
return "", "", errors.New("function file.Open() Filed, err:" + openError.Error()) |
|
|
|
} |
|
|
|
fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) |
|
|
|
|
|
|
|
_, err := c.Object.Put(context.Background(), global.GVA_CONFIG.TencentCOS.PathPrefix+"/"+fileKey, f, nil) |
|
|
|
if err != nil { |
|
|
|
panic(err) |
|
|
|
} |
|
|
|
return global.GVA_CONFIG.TencentCOS.BaseURL + "/" + global.GVA_CONFIG.TencentCOS.PathPrefix + "/" + fileKey, fileKey, nil |
|
|
|
} |
|
|
|
|
|
|
|
// DeleteFile delete file form COS
|
|
|
|
func (*TencentCOS) DeleteFile(key string) error { |
|
|
|
c := NewClient() |
|
|
|
name := global.GVA_CONFIG.TencentCOS.PathPrefix + "/" + key |
|
|
|
_, err := c.Object.Delete(context.Background(), name) |
|
|
|
if err != nil { |
|
|
|
global.GVA_LOG.Error("function bucketManager.Delete() Filed", zap.Any("err", err.Error())) |
|
|
|
return errors.New("function bucketManager.Delete() Filed, err:" + err.Error()) |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
// NewClient init COS client
|
|
|
|
func NewClient() *cos.Client { |
|
|
|
u, _ := url.Parse("https://" + global.GVA_CONFIG.TencentCOS.Bucket + ".cos." + global.GVA_CONFIG.TencentCOS.Region + ".myqcloud.com") |
|
|
|
b := &cos.BaseURL{BucketURL: u} |
|
|
|
c := cos.NewClient(b, &http.Client{ |
|
|
|
Transport: &cos.AuthorizationTransport{ |
|
|
|
SecretID: global.GVA_CONFIG.TencentCOS.SecretID, |
|
|
|
SecretKey: global.GVA_CONFIG.TencentCOS.SecretKey, |
|
|
|
}, |
|
|
|
}) |
|
|
|
return c |
|
|
|
} |