add domain parameter to createS3Storage and update related components

This commit is contained in:
nyne
2025-05-16 14:57:54 +08:00
parent 1b31af411d
commit a827b67c41
4 changed files with 103 additions and 77 deletions

View File

@@ -14,6 +14,7 @@ type CreateS3StorageParams struct {
EndPoint string `json:"endPoint"`
AccessKeyID string `json:"accessKeyID"`
SecretAccessKey string `json:"secretAccessKey"`
Domain string `json:"domain"`
BucketName string `json:"bucketName"`
MaxSizeInMB uint `json:"maxSizeInMB"`
}
@@ -32,6 +33,7 @@ func CreateS3Storage(uid uint, params CreateS3StorageParams) error {
AccessKeyID: params.AccessKeyID,
SecretAccessKey: params.SecretAccessKey,
BucketName: params.BucketName,
Domain: params.Domain,
}
s := model.Storage{
Name: params.Name,

View File

@@ -5,12 +5,13 @@ import (
"encoding/json"
"errors"
"fmt"
"net/url"
"time"
"github.com/gofiber/fiber/v3/log"
"github.com/google/uuid"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"net/url"
"time"
)
type S3Storage struct {
@@ -18,6 +19,7 @@ type S3Storage struct {
AccessKeyID string
SecretAccessKey string
BucketName string
Domain string
}
func (s *S3Storage) Upload(filePath string, fileName string) (string, error) {
@@ -43,6 +45,10 @@ func (s *S3Storage) Upload(filePath string, fileName string) (string, error) {
}
func (s *S3Storage) Download(storageKey string, fileName string) (string, error) {
if s.Domain != "" {
return s.Domain + "/" + storageKey, nil
}
minioClient, err := minio.New(s.EndPoint, &minio.Options{
Creds: credentials.NewStaticV4(s.AccessKeyID, s.SecretAccessKey, ""),
Secure: true,
@@ -80,6 +86,7 @@ func (s *S3Storage) FromString(config string) error {
s.AccessKeyID = s3Config.AccessKeyID
s.SecretAccessKey = s3Config.SecretAccessKey
s.BucketName = s3Config.BucketName
s.Domain = s3Config.Domain
if s.EndPoint == "" || s.AccessKeyID == "" || s.SecretAccessKey == "" || s.BucketName == "" {
return errors.New("invalid S3 configuration")
}