aboutsummaryrefslogtreecommitdiff
path: root/utils/minio
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-07-17 14:47:43 +0530
committerBobby <[email protected]>2025-07-17 14:47:43 +0530
commitf826397be8178dc3be812ac95c5d9219a7924c32 (patch)
treefe9682f1c3873691dc9113a6c67e571e0d799424 /utils/minio
parente7cb677c0558b042944a900394c1c196c5d1b898 (diff)
downloadimageboard-f826397be8178dc3be812ac95c5d9219a7924c32.tar.xz
imageboard-f826397be8178dc3be812ac95c5d9219a7924c32.zip
image upload feature
Diffstat (limited to 'utils/minio')
-rw-r--r--utils/minio/minio.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/utils/minio/minio.go b/utils/minio/minio.go
index c5576b1..30be90e 100644
--- a/utils/minio/minio.go
+++ b/utils/minio/minio.go
@@ -1 +1,48 @@
package minio
+
+import (
+ "bytes"
+ "context"
+ "fmt"
+ "imageboard/config"
+
+ "github.com/minio/minio-go/v7"
+ "github.com/minio/minio-go/v7/pkg/credentials"
+)
+
+func UploadImage(imageData []byte, sizeType config.ImageSizeType, fileName string, contentType string) error {
+ ctx := context.Background()
+
+ minioClient, err := minio.New(config.S3.Endpoint, &minio.Options{
+ Creds: credentials.NewStaticV4(config.S3.AccessKey, config.S3.SecretAccessKey, ""),
+ Secure: config.S3.UseSSL,
+ })
+ if err != nil {
+ return fmt.Errorf("failed to initialize MinIO client: %v", err)
+ }
+
+ bucketExists, err := minioClient.BucketExists(ctx, config.S3.BucketName)
+ if err != nil {
+ return fmt.Errorf("failed to check bucket existence: %v", err)
+ }
+
+ if !bucketExists {
+ err = minioClient.MakeBucket(ctx, config.S3.BucketName, minio.MakeBucketOptions{
+ Region: config.S3.Region,
+ })
+ if err != nil {
+ return fmt.Errorf("failed to create bucket: %v", err)
+ }
+ }
+
+ objectPath := fmt.Sprintf("%s/%s", sizeType, fileName)
+
+ _, err = minioClient.PutObject(ctx, config.S3.BucketName, objectPath, bytes.NewReader(imageData), int64(len(imageData)), minio.PutObjectOptions{
+ ContentType: contentType,
+ })
+ if err != nil {
+ return fmt.Errorf("failed to upload image: %v", err)
+ }
+
+ return nil
+}