MiniappGoService/pkg/minioDB/uploadFile.go

49 lines
1.0 KiB
Go

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
}