u
This commit is contained in:
1 parent
ca545fbc50
commit
07e0001b87
15 files changed
+527
-410
No files matched your search
@@ -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)
|
||||
}
|
||||
Reference in new issue
Block a user