From ec764b2a6d75f65fe7b87d3e8b6add11dea7c562 Mon Sep 17 00:00:00 2001 From: Jackie Wang Date: Tue, 14 Jul 2026 17:20:07 +0800 Subject: [PATCH] fix(obs): complete multipart uploads before callback --- assets | 2 +- pkg/filemanager/driver/obs/obs.go | 25 ------------------------- 2 files changed, 1 insertion(+), 26 deletions(-) diff --git a/assets b/assets index 2e995f1d..47ebc05d 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 2e995f1d4676d15b714dd82cb3aefe2e7697fcea +Subproject commit 47ebc05dc267c9f77eed007372310cfb2f5ea375 diff --git a/pkg/filemanager/driver/obs/obs.go b/pkg/filemanager/driver/obs/obs.go index 97c68622..f1f601d3 100644 --- a/pkg/filemanager/driver/obs/obs.go +++ b/pkg/filemanager/driver/obs/obs.go @@ -2,7 +2,6 @@ package obs import ( "context" - "encoding/base64" "encoding/json" "errors" "fmt" @@ -16,9 +15,7 @@ import ( "time" "github.com/cloudreve/Cloudreve/v4/ent" - "github.com/cloudreve/Cloudreve/v4/inventory/types" "github.com/cloudreve/Cloudreve/v4/pkg/boolset" - "github.com/cloudreve/Cloudreve/v4/pkg/cluster/routes" "github.com/cloudreve/Cloudreve/v4/pkg/conf" "github.com/cloudreve/Cloudreve/v4/pkg/filemanager/chunk" "github.com/cloudreve/Cloudreve/v4/pkg/filemanager/chunk/backoff" @@ -38,7 +35,6 @@ const ( imageProcessHeader = "x-image-process" trafficLimitHeader = "x-obs-traffic-limit" partNumberParam = "partNumber" - callbackParam = "x-obs-callback" uploadIdParam = "uploadId" mediaInfoTTL = time.Duration(10) * time.Minute imageInfoProcessor = "image/info" @@ -52,11 +48,6 @@ var ( ) type ( - CallbackPolicy struct { - CallbackURL string `json:"callbackUrl"` - CallbackBody string `json:"callbackBody"` - CallbackBodyType string `json:"callbackBodyType"` - } JsonError struct { Message string `json:"message"` Code string `json:"code"` @@ -411,23 +402,8 @@ func (d *Driver) Token(ctx context.Context, uploadSession *fs.UploadSession, fil return nil, fs.ErrFileExisted } - // 生成回调地址 - siteURL := d.settings.SiteURL(setting.UseFirstSiteUrl(ctx)) // 在从机端创建上传会话 uploadSession.ChunkSize = d.chunkSize - uploadSession.Callback = routes.MasterSlaveCallbackUrl(siteURL, types.PolicyTypeObs, uploadSession.Props.UploadSessionID, uploadSession.CallbackSecret).String() - // 回调策略 - callbackPolicy := CallbackPolicy{ - CallbackURL: uploadSession.Callback, - CallbackBody: `{"name":${key},"source_name":${fname},"size":${size}}`, - CallbackBodyType: "application/json", - } - - callbackPolicyJSON, err := json.Marshal(callbackPolicy) - if err != nil { - return nil, fmt.Errorf("failed to encode callback policy: %w", err) - } - callbackPolicyEncoded := base64.StdEncoding.EncodeToString(callbackPolicyJSON) mimeType := file.Props.MimeType if mimeType == "" { @@ -487,7 +463,6 @@ func (d *Driver) Token(ctx context.Context, uploadSession *fs.UploadSession, fil Key: file.Props.SavePath, QueryParams: map[string]string{ uploadIdParam: uploadSession.UploadID, - callbackParam: callbackPolicyEncoded, }, Headers: map[string]string{ "Content-Type": "application/octet-stream",