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