This commit is contained in:
oneao committed 2026-04-23 21:35:54 +08:00
1 parent ca545fbc50
commit 07e0001b87
15 files changed
+527 -410

No files matched your search

@@ -16,6 +16,7 @@ import (
func RunServer(cfg *config.Config) error {
app := fiber.New(fiber.Config{
ErrorHandler: errors.ErrorHandler(),
BodyLimit: 20 * 1024 * 1024, // 20MB
})
// ===== middleware =====
+31 -27
View File
@@ -5,7 +5,6 @@ import (
"allapp-go/internal/httpx"
"allapp-go/pkg/s3store"
"fmt"
"mime/multipart"
"path/filepath"
"time"
@@ -31,20 +30,17 @@ func S3ListBuckets(c fiber.Ctx) error {
}
func S3UploadFile(c fiber.Ctx) error {
fileHeader, err := c.FormFile("file")
form, err := c.MultipartForm()
if err != nil {
return errors.WithStack(err)
}
file, err := fileHeader.Open()
if err != nil {
return errors.WithStack(err)
files := form.File["files"]
if len(files) == 0 {
return httpx.OK(c, nil)
}
defer func(file multipart.File) {
_ = file.Close()
}(file)
// 日期目录
now := time.Now()
folderPath := fmt.Sprintf("%d/%02d/%02d",
now.Year(),
@@ -52,28 +48,36 @@ func S3UploadFile(c fiber.Ctx) error {
now.Day(),
)
// UUID 文件名(保留后缀)
ext := filepath.Ext(fileHeader.Filename)
newName := fmt.Sprintf("%s%s", uuid.NewString(), ext)
var result []string
// S3 object key
key := fmt.Sprintf("%s/%s", folderPath, newName)
for _, fileHeader := range files {
file, err := fileHeader.Open()
if err != nil {
return errors.WithStack(err)
}
// ContentType(防止前端乱传)
contentType := fileHeader.Header.Get("Content-Type")
ext := filepath.Ext(fileHeader.Filename)
newName := fmt.Sprintf("%s%s", uuid.NewString(), ext)
key := fmt.Sprintf("%s/%s", folderPath, newName)
// 调用存储层
err = s3store.UploadToRustFS(
c.Context(),
key,
file,
fileHeader.Size,
contentType,
)
contentType := fileHeader.Header.Get("Content-Type")
if err != nil {
return errors.WithStack(err)
err = s3store.UploadToRustFS(
c.Context(),
key,
file,
fileHeader.Size,
contentType,
)
_ = file.Close()
if err != nil {
return errors.WithStack(err)
}
result = append(result, key)
}
return httpx.OK(c, nil)
return httpx.OK(c, result)
}