mirror of
https://github.com/cloudreve/Cloudreve.git
synced 2025-12-26 00:12:50 +00:00
fix(oss): presigned multipart upload mismatch
This commit is contained in:
parent
213eaa54dd
commit
46897e2880
2
assets
2
assets
|
|
@ -1 +1 @@
|
|||
Subproject commit 71e5fbd240824ad0b6e8ebe5e47d25704a82d7c4
|
||||
Subproject commit 1c38544ef7fd51b4404797cf57355795c28683c1
|
||||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -244,8 +244,8 @@ type (
|
|||
UploadURLs []string `json:"upload_urls,omitempty"`
|
||||
Credential string `json:"credential,omitempty"`
|
||||
UploadID string `json:"uploadID,omitempty"`
|
||||
Callback string `json:"callback,omitempty"` // 回调地址
|
||||
Uri string `json:"uri,omitempty"` // 存储路径
|
||||
Callback string `json:"callback,omitempty"`
|
||||
Uri string `json:"uri,omitempty"` // 存储路径
|
||||
AccessKey string `json:"ak,omitempty"`
|
||||
KeyTime string `json:"keyTime,omitempty"` // COS用有效期
|
||||
CompleteURL string `json:"completeURL,omitempty"`
|
||||
|
|
|
|||
Loading…
Reference in New Issue