From e32388f70abd8c86cc68411d8f41eb9230807331 Mon Sep 17 00:00:00 2001 From: keven1024 <99848979+keven1024@users.noreply.github.com> Date: Mon, 28 Apr 2025 20:13:35 +0800 Subject: [PATCH] feat(backend): add file upload controller with task creation, slice upload, and completion handling --- backend/{ => internal}/controllers/file.go | 25 +++++++++++++++++++++- backend/main.go | 3 +-- 2 files changed, 25 insertions(+), 3 deletions(-) rename backend/{ => internal}/controllers/file.go (86%) diff --git a/backend/controllers/file.go b/backend/internal/controllers/file.go similarity index 86% rename from backend/controllers/file.go rename to backend/internal/controllers/file.go index b119866..63ac4bf 100644 --- a/backend/controllers/file.go +++ b/backend/internal/controllers/file.go @@ -4,8 +4,11 @@ import ( "backend/internal/models" "backend/internal/service" "backend/internal/utils" + "crypto/md5" "encoding/json" "errors" + "fmt" + "io" "mime/multipart" "time" @@ -81,7 +84,27 @@ func UploadFileSlice(c echo.Context) error { return utils.HTTPErrorHandler(c, err) } - if err := service.CreateFileSlice(r.FileSlice, r.FileId, r.FileIndex); err != nil { + // 打开文件 + file, err := r.FileSlice.Open() + if err != nil { + return utils.HTTPErrorHandler(c, err) + } + defer file.Close() + + // 读取文件内容 + fileBytes, err := io.ReadAll(file) + if err != nil { + return utils.HTTPErrorHandler(c, err) + } + + // 计算 MD5 哈希 + hash := md5.Sum(fileBytes) + // 如果需要十六进制字符串形式 + hashString := fmt.Sprintf("%x", hash) + + fmt.Printf("hash: %s\n", hashString) + + if err := service.CreateFileSlice(file, r.FileId, r.FileIndex); err != nil { return utils.HTTPErrorHandler(c, err) } diff --git a/backend/main.go b/backend/main.go index a77d0f0..692d1ad 100644 --- a/backend/main.go +++ b/backend/main.go @@ -1,8 +1,7 @@ package main import ( - "backend/controllers" - + "backend/internal/controllers" "backend/middleware" "github.com/labstack/echo/v4"