mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-30 22:42:29 +08:00
s3 presigned test
This commit is contained in:
parent
bfd1df751e
commit
4203705bf5
@ -8,6 +8,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/s3"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/s3"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@ -191,7 +192,7 @@ func (c *Controller) CompleteUpload(ctx context.Context, uploadID string, partHa
|
|||||||
}
|
}
|
||||||
md5Sum := md5.Sum([]byte(strings.Join([]string{uploadInfo.ETag}, partSeparator)))
|
md5Sum := md5.Sum([]byte(strings.Join([]string{uploadInfo.ETag}, partSeparator)))
|
||||||
if md5val := hex.EncodeToString(md5Sum[:]); md5val != upload.Hash {
|
if md5val := hex.EncodeToString(md5Sum[:]); md5val != upload.Hash {
|
||||||
return nil, fmt.Errorf("md5 mismatching %s != %s", md5val, upload.Hash)
|
return nil, errs.ErrArgs.Wrap(fmt.Sprintf("md5 mismatching %s != %s", md5val, upload.Hash))
|
||||||
}
|
}
|
||||||
// 防止在这个时候,并发操作,导致文件被覆盖
|
// 防止在这个时候,并发操作,导致文件被覆盖
|
||||||
copyInfo, err := c.impl.CopyObject(ctx, uploadInfo.Key, upload.Key+"."+c.UUID())
|
copyInfo, err := c.impl.CopyObject(ctx, uploadInfo.Key, upload.Key+"."+c.UUID())
|
||||||
@ -199,8 +200,8 @@ func (c *Controller) CompleteUpload(ctx context.Context, uploadID string, partHa
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
cleanObject[copyInfo.Key] = struct{}{}
|
cleanObject[copyInfo.Key] = struct{}{}
|
||||||
if copyInfo.ETag != upload.Hash {
|
if copyInfo.ETag != uploadInfo.ETag {
|
||||||
return nil, errors.New("copy md5 mismatching")
|
return nil, errors.New("[concurrency]copy md5 mismatching")
|
||||||
}
|
}
|
||||||
if _, err := c.impl.CopyObject(ctx, copyInfo.Key, c.HashPath(upload.Hash)); err != nil {
|
if _, err := c.impl.CopyObject(ctx, copyInfo.Key, c.HashPath(upload.Hash)); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user