package minioDB import ( "context" "fmt" _ "image/gif" _ "image/jpeg" "io" _ "github.com/gen2brain/heic" "github.com/minio/minio-go/v7" ) // UploadFile uploads an image to MinIO func (c *client) UploadFile( ctx context.Context, bucketName, objectName string, reader io.Reader, size int64, opts minio.PutObjectOptions, ) (string, error) { // Ensure bucket exists exist, err := c.existBucket(bucketName) if err != nil { return "", fmt.Errorf("failed to check bucket: %v", err) } if !exist { if err := c.createBucket(bucketName); err != nil { return "", fmt.Errorf("failed to create bucket: %v", err) } } if bucketName == "" { return "", fmt.Errorf("bucket name cannot be empty") } // Generate secure file name name, err := c.generateFileName(objectName) if err != nil { return "", fmt.Errorf("failed to generate file name: %v", err) } // Upload to MinIO _, err = c.minioClient.PutObject( ctx, bucketName, name, reader, size, opts, ) if err != nil { return "", fmt.Errorf("failed to upload file: %v", err) } return name, nil }