From 5a9ecbf29531107a7e74d70a2a85d9fe6d1023e7 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 10 Jul 2023 18:40:30 +0800 Subject: [PATCH] s3 presigned test --- pkg/common/db/s3/cont/consts.go | 1 + pkg/common/db/s3/cont/controller.go | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/common/db/s3/cont/consts.go b/pkg/common/db/s3/cont/consts.go index 80cb66319..144370a2d 100644 --- a/pkg/common/db/s3/cont/consts.go +++ b/pkg/common/db/s3/cont/consts.go @@ -5,4 +5,5 @@ const ( tempPath = "openim/temp/" UploadTypeMultipart = 1 // 分片上传 UploadTypePresigned = 2 // 预签名上传 + partSeparator = "," ) diff --git a/pkg/common/db/s3/cont/controller.go b/pkg/common/db/s3/cont/controller.go index 669be9267..61af4e106 100644 --- a/pkg/common/db/s3/cont/controller.go +++ b/pkg/common/db/s3/cont/controller.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/s3" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/google/uuid" "path" "strings" @@ -143,7 +144,7 @@ func (c *Controller) CompleteUpload(ctx context.Context, uploadID string, partHa if err != nil { return nil, err } - if md5Sum := md5.Sum([]byte(strings.Join(partHashs, ","))); hex.EncodeToString(md5Sum[:]) != upload.Hash { + if md5Sum := md5.Sum([]byte(strings.Join(partHashs, partSeparator))); hex.EncodeToString(md5Sum[:]) != upload.Hash { fmt.Println("CompleteUpload sum:", hex.EncodeToString(md5Sum[:]), "upload hash:", upload.Hash) return nil, errors.New("md5 mismatching") } @@ -187,8 +188,9 @@ func (c *Controller) CompleteUpload(ctx context.Context, uploadID string, partHa if uploadInfo.Size != upload.Size { return nil, errors.New("upload size mismatching") } - md5Sum := md5.Sum([]byte(strings.Join([]string{uploadInfo.ETag}, ","))) - if hex.EncodeToString(md5Sum[:]) != upload.Hash { + md5Sum := md5.Sum([]byte(strings.Join([]string{uploadInfo.ETag}, partSeparator))) + if md5val := hex.EncodeToString(md5Sum[:]); md5val != upload.Hash { + log.ZInfo(ctx, "CompleteUpload UploadTypePresigned", "getEtag", uploadInfo.ETag, "upload", upload, "etag[]", md5val, "upload hash:", upload.Hash, "key:", upload.Key) return nil, errors.New("upload md5 mismatching") } // 防止在这个时候,并发操作,导致文件被覆盖