minio.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package minio
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/minio/minio-go/v7"
  6. "github.com/minio/minio-go/v7/pkg/credentials"
  7. "io"
  8. "iot_manager_service/config"
  9. "iot_manager_service/util/logger"
  10. )
  11. type FileObject struct {
  12. Bucket string
  13. ObjectName string
  14. ObjectSize int64
  15. Reader io.Reader
  16. }
  17. var MinioClient *minio.Client
  18. func InitMinio() {
  19. cfg := config.Instance()
  20. client, err := minio.New(cfg.Minio.Endpoint, &minio.Options{
  21. Creds: credentials.NewStaticV4(cfg.Minio.AccessKey, cfg.Minio.SecretKey, ""),
  22. Secure: false,
  23. })
  24. if err != nil {
  25. panic(fmt.Sprintf("InitMinio err = %s", err.Error()))
  26. }
  27. MinioClient = client
  28. }
  29. func PutFile(fileObject FileObject) error {
  30. ctx := context.Background()
  31. //桶是否存在
  32. exists, _ := MinioClient.BucketExists(ctx, fileObject.Bucket)
  33. if !exists {
  34. opts := minio.MakeBucketOptions{
  35. Region: "cn-north-1",
  36. }
  37. //MinioClient.SetBucketPolicy(ctx, fileObject.Bucket, policy.BucketPolicyReadOnly)
  38. MinioClient.MakeBucket(ctx, fileObject.Bucket, opts)
  39. }
  40. _, err := MinioClient.PutObject(ctx, fileObject.Bucket, fileObject.ObjectName, fileObject.Reader, fileObject.ObjectSize,
  41. minio.PutObjectOptions{})
  42. if err != nil {
  43. logger.Logger.Errorf("PutObject fail, err = %s", err.Error())
  44. return err
  45. }
  46. return nil
  47. }
  48. func DeleteObject(bucket, objName string) {
  49. ops := minio.RemoveObjectOptions{}
  50. MinioClient.RemoveObject(context.Background(), bucket, objName, ops)
  51. }