aliyun_oss.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package utils
  2. import (
  3. "fmt"
  4. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  5. "time"
  6. )
  7. // UploadFile 上传文件
  8. func (m *AliyunService) UploadFile(fileName, filePath, savePath string) (resourceUrl string, err error) {
  9. bucket, errBucketExists := m.client.Bucket(Bucketname)
  10. if err != nil {
  11. err = fmt.Errorf("BucketExists: %v; err: %v", Bucketname, errBucketExists)
  12. FileLog.Error("BucketExists: %v; err: %v", Bucketname, errBucketExists)
  13. return
  14. }
  15. path := fmt.Sprintf("%s%s%s/%s", MinIoUploadDir, time.Now().Format("200601/20060102/"), savePath, fileName)
  16. if err != nil {
  17. FileLog.Error("MinIo上传文件失败:", err)
  18. return
  19. }
  20. err = bucket.PutObjectFromFile(path, filePath)
  21. if err != nil {
  22. FileLog.Error("Aliyun上传文件失败:", err)
  23. return
  24. }
  25. resourceUrl = Imghost + path
  26. return resourceUrl, err
  27. }
  28. func (m *AliyunService) Instance() OssClient {
  29. if AliyunClient == nil {
  30. aliyunOnce.Do(func() {
  31. if AccessKeyId == "" {
  32. FileLog.Warn("MinIo信息未配置,实例化客户端失败")
  33. return
  34. }
  35. client, err := oss.New(Endpoint, AccessKeyId, AccessKeySecret)
  36. if err != nil {
  37. FileLog.Error("Aliyun连接失败:", err)
  38. return
  39. }
  40. AliyunClient = &AliyunService{
  41. client: client,
  42. }
  43. })
  44. }
  45. return AliyunClient
  46. }