1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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) {
- client := 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 := client.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 {
- client := NewClient()
- name := global.GVA_CONFIG.TencentCOS.PathPrefix + "/" + key
- _, err := client.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 {
- urlStr, _ := url.Parse("https://" + global.GVA_CONFIG.TencentCOS.Bucket + ".cos." + global.GVA_CONFIG.TencentCOS.Region + ".myqcloud.com")
- baseURL := &cos.BaseURL{BucketURL: urlStr}
- client := cos.NewClient(baseURL, &http.Client{
- Transport: &cos.AuthorizationTransport{
- SecretID: global.GVA_CONFIG.TencentCOS.SecretID,
- SecretKey: global.GVA_CONFIG.TencentCOS.SecretKey,
- },
- })
- return client
- }
|