fix(oss): traffic limit should be in query instead of headers (#2977)

This commit is contained in:
Aaron Liu 2025-10-16 07:46:22 +08:00
parent e29237d593
commit 21cdafb2af

View File

@ -65,8 +65,11 @@ type Driver struct {
type key int type key int
const ( const (
chunkRetrySleep = time.Duration(5) * time.Second chunkRetrySleep = time.Duration(5) * time.Second
maxDeleteBatch = 1000 maxDeleteBatch = 1000
completeAllHeader = "x-oss-complete-all"
forbidOverwriteHeader = "x-oss-forbid-overwrite"
trafficLimitHeader = "x-oss-traffic-limit"
// MultiPartUploadThreshold 服务端使用分片上传的阈值 // MultiPartUploadThreshold 服务端使用分片上传的阈值
MultiPartUploadThreshold int64 = 5 * (1 << 30) // 5GB 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 { if args.Speed > 838860800 {
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) 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("OSSAccessKeyId")
query.Del("Signature") query.Del("Signature")
query.Del("response-content-disposition") query.Del("response-content-disposition")
query.Del("x-oss-traffic-limit") query.Del(trafficLimitHeader)
finalURL.RawQuery = query.Encode() finalURL.RawQuery = query.Encode()
} }
return finalURL.String(), nil return finalURL.String(), nil
@ -554,9 +559,9 @@ func (handler *Driver) Token(ctx context.Context, uploadSession *fs.UploadSessio
"callback": callbackPolicyEncoded, "callback": callbackPolicyEncoded,
}, },
Headers: map[string]string{ Headers: map[string]string{
"Content-Type": "application/octet-stream", "Content-Type": "application/octet-stream",
"x-oss-complete-all": "yes", completeAllHeader: "yes",
"x-oss-forbid-overwrite": "true", forbidOverwriteHeader: "true",
}, },
}, },
}, oss.PresignExpires(ttl)) }, oss.PresignExpires(ttl))