12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package upload
- import (
- "context"
- "errors"
- "fmt"
- "mime/multipart"
- "net/http"
- "net/url"
- "time"
- "github.com/flipped-aurora/gin-vue-admin/server/global"
- "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())
- }
- defer f.Close() // 创建文件 defer 关闭
- 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
- }
|