From d77fc85fd38822836355173ea0ea445cff6b95dc Mon Sep 17 00:00:00 2001 From: keven Date: Thu, 12 Jun 2025 23:50:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=BB=BB=E5=8A=A1=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E7=A9=BA=E9=97=B4=E6=A3=80=E6=9F=A5=EF=BC=8C=E7=A1=AE?= =?UTF-8?q?=E4=BF=9D=E4=B8=8D=E8=B6=85=E8=BF=87=E6=9C=80=E5=A4=A7=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=AD=98=E5=82=A8=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/controllers/file.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/backend/internal/controllers/file.go b/backend/internal/controllers/file.go index bd17641..90a1d94 100644 --- a/backend/internal/controllers/file.go +++ b/backend/internal/controllers/file.go @@ -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) }