From 0f3efbc89545beaba6fbaa7b2c4bc5aea29e4629 Mon Sep 17 00:00:00 2001 From: Blizzard Date: Fri, 31 Jul 2026 14:16:53 +0800 Subject: [PATCH] =?UTF-8?q?chore(be):=20=E4=B8=8A=E4=BC=A0=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=8C=89=E6=9C=88=E4=BB=BD=E5=88=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=20uploads/YYYY-MM/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MD5 去重本来就有(相同内容直接返回已有记录不重传);对象名从 files/ 改成 uploads/2026-07/,跨月的同内容仍走去重不重复占用。 Co-Authored-By: Claude Opus 5 --- pets-be/internal/service/file.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pets-be/internal/service/file.go b/pets-be/internal/service/file.go index e108749..4c187cd 100644 --- a/pets-be/internal/service/file.go +++ b/pets-be/internal/service/file.go @@ -8,6 +8,7 @@ import ( "io" "path" "strings" + "time" "github.com/sundynix/pets-be/internal/model" ) @@ -41,7 +42,9 @@ func (s *Service) UploadFile(reader io.Reader, filename, contentType string) (*m if contentType == "" { contentType = "application/octet-stream" } - objectName := "files/" + md5hex + ext + // 按上传月份分文件夹:uploads/2026-07/.jpg。文件名仍用 md5 保证唯一。 + // 同内容命中上面的去重直接复用,不会因为跨月再传一份 + objectName := "uploads/" + time.Now().Format("2006-01") + "/" + md5hex + ext url, err := s.storage.Upload(objectName, bytes.NewReader(data), int64(len(data)), contentType) if err != nil { return nil, err