mirror of
https://github.com/keven1024/015.git
synced 2026-05-26 07:08:02 +00:00
feat: 在文件上传任务中添加存储空间检查,确保不超过最大本地存储限制
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
|
||||
func CreateUploadTask(c echo.Context) error {
|
||||
@@ -40,6 +41,25 @@ func CreateUploadTask(c echo.Context) error {
|
||||
"chunk_size": fileInfo.ChunkSize,
|
||||
})
|
||||
}
|
||||
|
||||
maxStorageSize := cast.ToInt64(utils.GetEnv("MAX_LOCALSTORAGE_SIZE"))
|
||||
fileInfoMap, err := models.GetRedisFileInfoAll()
|
||||
if err != nil {
|
||||
return utils.HTTPErrorHandler(c, err)
|
||||
}
|
||||
totalSize := int64(0)
|
||||
for _, value := range fileInfoMap {
|
||||
var fileInfo models.RedisFileInfo
|
||||
err := json.Unmarshal([]byte(value), &fileInfo)
|
||||
if err != nil {
|
||||
return utils.HTTPErrorHandler(c, err)
|
||||
}
|
||||
totalSize += fileInfo.FileSize
|
||||
}
|
||||
if totalSize+r.FileSize > maxStorageSize {
|
||||
return utils.HTTPErrorHandler(c, errors.New("存储空间不足"))
|
||||
}
|
||||
|
||||
ChunkSize := int64(1 * 1024 * 1024)
|
||||
if r.FileSize > 500*1024*1024 {
|
||||
ChunkSize = r.FileSize / 500
|
||||
@@ -56,7 +76,7 @@ func CreateUploadTask(c echo.Context) error {
|
||||
CreatedAt: time.Now().Unix(),
|
||||
Expire: uploadTaskExpire,
|
||||
}
|
||||
err := models.SetRedisFileInfo(fileId, newFileInfo)
|
||||
err = models.SetRedisFileInfo(fileId, newFileInfo)
|
||||
if err != nil {
|
||||
return utils.HTTPErrorHandler(c, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user