fix(oss): presigned multipart upload mismatch
This commit is contained in:
@@ -65,12 +65,8 @@ type Driver struct {
|
||||
type key int
|
||||
|
||||
const (
|
||||
chunkRetrySleep = time.Duration(5) * time.Second
|
||||
uploadIdParam = "uploadId"
|
||||
partNumberParam = "partNumber"
|
||||
callbackParam = "callback"
|
||||
completeAllHeader = "x-oss-complete-all"
|
||||
maxDeleteBatch = 1000
|
||||
chunkRetrySleep = time.Duration(5) * time.Second
|
||||
maxDeleteBatch = 1000
|
||||
|
||||
// MultiPartUploadThreshold 服务端使用分片上传的阈值
|
||||
MultiPartUploadThreshold int64 = 5 * (1 << 30) // 5GB
|
||||
@@ -530,6 +526,11 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio
|
||||
UploadId: imur.UploadId,
|
||||
PartNumber: int32(c.Index() + 1),
|
||||
Body: chunk,
|
||||
RequestCommon: oss.RequestCommon{
|
||||
Headers: map[string]string{
|
||||
"Content-Type": "application/octet-stream",
|
||||
},
|
||||
},
|
||||
}, oss.PresignExpires(ttl))
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -545,12 +546,19 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio
|
||||
|
||||
// 签名完成分片上传的URL
|
||||
completeURL, err := handler.client.Presign(ctx, &oss.CompleteMultipartUploadRequest{
|
||||
Bucket: &handler.policy.BucketName,
|
||||
Key: &file.Props.SavePath,
|
||||
UploadId: imur.UploadId,
|
||||
CompleteAll: oss.Ptr("yes"),
|
||||
ForbidOverwrite: oss.Ptr(strconv.FormatBool(true)),
|
||||
Callback: oss.Ptr(callbackPolicyEncoded),
|
||||
Bucket: &handler.policy.BucketName,
|
||||
Key: &file.Props.SavePath,
|
||||
UploadId: imur.UploadId,
|
||||
RequestCommon: oss.RequestCommon{
|
||||
Parameters: map[string]string{
|
||||
"callback": callbackPolicyEncoded,
|
||||
},
|
||||
Headers: map[string]string{
|
||||
"Content-Type": "application/octet-stream",
|
||||
"x-oss-complete-all": "yes",
|
||||
"x-oss-forbid-overwrite": "true",
|
||||
},
|
||||
},
|
||||
}, oss.PresignExpires(ttl))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -562,6 +570,7 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio
|
||||
CompleteURL: completeURL.URL,
|
||||
SessionID: uploadSession.Props.UploadSessionID,
|
||||
ChunkSize: handler.chunkSize,
|
||||
Callback: callbackPolicyEncoded,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user