minio.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package services
  2. import (
  3. "context"
  4. "errors"
  5. "eta/eta_report/utils"
  6. "github.com/minio/minio-go/v7"
  7. "github.com/minio/minio-go/v7/pkg/credentials"
  8. "log"
  9. "time"
  10. )
  11. // UploadMinIoToDir 上传至hzchart
  12. func UploadMinIoToDir(filename, filePath, uploadDir, fileDir string) (string, error) {
  13. if utils.MinIoAccessKeyId == `` || utils.MinIoAccessKeySecret == `` {
  14. return "0", errors.New("MinIo信息未配置")
  15. }
  16. ctx := context.Background()
  17. endpoint := utils.MinIoEndpoint
  18. accessKeyID := utils.MinIoAccessKeyId
  19. secretAccessKey := utils.MinIoAccessKeySecret
  20. useSSL := false
  21. if utils.MinIoUseSSL == "true" {
  22. useSSL = true
  23. }
  24. minioClient, err := minio.New(endpoint, &minio.Options{
  25. Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
  26. Secure: useSSL,
  27. })
  28. if err != nil {
  29. log.Fatalln(err)
  30. return "1", err
  31. }
  32. bucketName := utils.MinIoBucketname
  33. // Check to see if we already own this bucket (which happens if you run this twice)
  34. exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)
  35. if errBucketExists == nil && exists {
  36. log.Printf("We already own %s\n", bucketName)
  37. } else {
  38. log.Fatalln(err)
  39. return "2", err
  40. }
  41. if uploadDir == "" {
  42. uploadDir = utils.MinIoUploadDir
  43. }
  44. if fileDir == "" {
  45. fileDir = time.Now().Format("200601/20060102/")
  46. }
  47. path := uploadDir + fileDir
  48. path += filename
  49. _, err = minioClient.FPutObject(ctx, bucketName, path, filePath, minio.PutObjectOptions{})
  50. if err != nil {
  51. log.Fatalln(err)
  52. return "3", err
  53. }
  54. path = utils.MinIoImghost + path
  55. return path, err
  56. }