minio.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package paas
  2. import (
  3. "github.com/kataras/iris/v12"
  4. "github.com/minio/minio-go/v7"
  5. "github.com/minio/minio-go/v7/pkg/credentials"
  6. "log"
  7. )
  8. type MinioClient struct {
  9. ctx iris.Context
  10. client *minio.Client
  11. fileBucket string
  12. iconBucket string
  13. location string
  14. }
  15. func NewClient(ctx iris.Context) *MinioClient {
  16. var minioHost = ""
  17. var minioPort = ""
  18. var accessKey = ""
  19. var secretKey = ""
  20. minioClient, err := minio.New(
  21. minioHost + ":"+ minioPort,
  22. &minio.Options{
  23. Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
  24. Secure: false,
  25. })
  26. if err != nil {
  27. log.Fatalf("connect minio server fail %s url %s", err.Error(), err.Error(), minioHost+":"+minioPort)
  28. }
  29. return &MinioClient{
  30. ctx: ctx,
  31. client: minioClient,
  32. location: "us-east-1",
  33. fileBucket: "file",
  34. iconBucket: "icon",
  35. }
  36. }
  37. func (c *MinioClient) checkBuckets() bool {
  38. b1 := c.checkBucket(c.fileBucket)
  39. b2 := c.checkBucket(c.iconBucket)
  40. return b1&&b2
  41. }
  42. func (c *MinioClient) checkBucket(bucketName string) bool {
  43. isExist, err1 := c.client.BucketExists(c.ctx, bucketName)
  44. if err1 != nil {
  45. log.Fatalf("checkBucket error " + err1.Error())
  46. return false
  47. }
  48. if !isExist {
  49. err2 := c.client.MakeBucket(c.ctx, bucketName, minio.MakeBucketOptions{Region: c.location})
  50. if err2 != nil {
  51. log.Fatalf("checkBucket error " + err2.Error())
  52. return false
  53. }
  54. }
  55. return true
  56. }
  57. func (c *MinioClient) uploadObject(objectName, localFileName string) {
  58. _, err := c.client.FPutObject(c.ctx, c.fileBucket, objectName, localFileName, minio.PutObjectOptions{})
  59. if err != nil {
  60. log.Fatalf("upload object error" + err.Error())
  61. }
  62. }