Browse Source

feat:add a uuid after uploadid (#3963)

pull/3968/head
famosss 2 years ago
committed by GitHub
parent
commit
df0662038c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      weed/s3api/filer_multipart.go
  2. 5
      weed/s3api/s3api_object_multipart_handlers.go

3
weed/s3api/filer_multipart.go

@ -4,6 +4,7 @@ import (
"encoding/hex"
"encoding/xml"
"fmt"
"github.com/google/uuid"
"github.com/seaweedfs/seaweedfs/weed/s3api/s3err"
"golang.org/x/exp/slices"
"math"
@ -32,6 +33,8 @@ func (s3a *S3ApiServer) createMultipartUpload(input *s3.CreateMultipartUploadInp
uploadIdString := s3a.generateUploadID(*input.Key)
uploadIdString = uploadIdString + "_" +strings.ReplaceAll(uuid.New().String(),"-","")
if err := s3a.mkdir(s3a.genUploadsFolder(*input.Bucket), uploadIdString, func(entry *filer_pb.Entry) {
if entry.Extended == nil {
entry.Extended = make(map[string][]byte)

5
weed/s3api/s3api_object_multipart_handlers.go

@ -284,8 +284,9 @@ func (s3a *S3ApiServer) generateUploadID(object string) string {
// Check object name and uploadID when processing multipart uploading
func (s3a *S3ApiServer) checkUploadId(object string, id string) error {
hash := s3a.generateUploadID(object)
if hash != id {
hash := s3a.generateUploadID(strings.Split(object, "_")[0])
if !strings.HasPrefix(id, hash) {
glog.Errorf("object %s and uploadID %s are not matched", object, id)
return fmt.Errorf("object %s and uploadID %s are not matched", object, id)
}

Loading…
Cancel
Save