From 21cdafb2af3f4a3401d09218a81943cc86380d8f Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Thu, 16 Oct 2025 07:46:22 +0800 Subject: [PATCH] fix(oss): traffic limit should be in query instead of headers (#2977) --- pkg/filemanager/driver/oss/oss.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/filemanager/driver/oss/oss.go b/pkg/filemanager/driver/oss/oss.go index 178eca78..b2b7ae91 100644 --- a/pkg/filemanager/driver/oss/oss.go +++ b/pkg/filemanager/driver/oss/oss.go @@ -65,8 +65,11 @@ type Driver struct { type key int const ( - chunkRetrySleep = time.Duration(5) * time.Second - maxDeleteBatch = 1000 + chunkRetrySleep = time.Duration(5) * time.Second + maxDeleteBatch = 1000 + completeAllHeader = "x-oss-complete-all" + forbidOverwriteHeader = "x-oss-forbid-overwrite" + trafficLimitHeader = "x-oss-traffic-limit" // MultiPartUploadThreshold 服务端使用分片上传的阈值 MultiPartUploadThreshold int64 = 5 * (1 << 30) // 5GB @@ -427,7 +430,9 @@ func (handler *Driver) Source(ctx context.Context, e fs.Entity, args *driver.Get if args.Speed > 838860800 { args.Speed = 838860800 } - req.TrafficLimit = args.Speed + req.Parameters = map[string]string{ + trafficLimitHeader: strconv.FormatInt(args.Speed, 10), + } } return handler.signSourceURL(ctx, e.Source(), args.Expire, req, false) @@ -464,7 +469,7 @@ func (handler *Driver) signSourceURL(ctx context.Context, path string, expire *t query.Del("OSSAccessKeyId") query.Del("Signature") query.Del("response-content-disposition") - query.Del("x-oss-traffic-limit") + query.Del(trafficLimitHeader) finalURL.RawQuery = query.Encode() } return finalURL.String(), nil @@ -554,9 +559,9 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio "callback": callbackPolicyEncoded, }, Headers: map[string]string{ - "Content-Type": "application/octet-stream", - "x-oss-complete-all": "yes", - "x-oss-forbid-overwrite": "true", + "Content-Type": "application/octet-stream", + completeAllHeader: "yes", + forbidOverwriteHeader: "true", }, }, }, oss.PresignExpires(ttl))