package paas import ( "github.com/kataras/iris/v12" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" "log" ) type MinioClient struct { ctx iris.Context client *minio.Client fileBucket string iconBucket string location string } func NewClient(ctx iris.Context) *MinioClient { var minioHost = "" var minioPort = "" var accessKey = "" var secretKey = "" minioClient, err := minio.New( minioHost + ":"+ minioPort, &minio.Options{ Creds: credentials.NewStaticV4(accessKey, secretKey, ""), Secure: false, }) if err != nil { log.Fatalf("connect minio server fail %s url %s", err.Error(), err.Error(), minioHost+":"+minioPort) } return &MinioClient{ ctx: ctx, client: minioClient, location: "us-east-1", fileBucket: "file", iconBucket: "icon", } } func (c *MinioClient) checkBuckets() bool { b1 := c.checkBucket(c.fileBucket) b2 := c.checkBucket(c.iconBucket) return b1&&b2 } func (c *MinioClient) checkBucket(bucketName string) bool { isExist, err1 := c.client.BucketExists(c.ctx, bucketName) if err1 != nil { log.Fatalf("checkBucket error " + err1.Error()) return false } if !isExist { err2 := c.client.MakeBucket(c.ctx, bucketName, minio.MakeBucketOptions{Region: c.location}) if err2 != nil { log.Fatalf("checkBucket error " + err2.Error()) return false } } return true } func (c *MinioClient) uploadObject(objectName, localFileName string) { _, err := c.client.FPutObject(c.ctx, c.fileBucket, objectName, localFileName, minio.PutObjectOptions{}) if err != nil { log.Fatalf("upload object error" + err.Error()) } }