famosss
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
6 additions and
2 deletions
-
weed/s3api/filer_multipart.go
-
weed/s3api/s3api_object_multipart_handlers.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) |
|
|
|
|
|
@ -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) |
|
|
|
} |
|
|
|