From c13b7365b0a1275274e5fb5c3481f521dbf9bb97 Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Thu, 29 May 2025 10:19:06 +0800 Subject: [PATCH] fix(s3): avoid perform URL encoding for proxyed path again if possible (#2413) --- pkg/filemanager/driver/util.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/filemanager/driver/util.go b/pkg/filemanager/driver/util.go index 14418f5..f58e45e 100644 --- a/pkg/filemanager/driver/util.go +++ b/pkg/filemanager/driver/util.go @@ -2,10 +2,11 @@ package driver import ( "fmt" - "github.com/cloudreve/Cloudreve/v4/ent" "net/url" "path" "strings" + + "github.com/cloudreve/Cloudreve/v4/ent" ) func ApplyProxyIfNeeded(policy *ent.StoragePolicy, srcUrl *url.URL) (*url.URL, error) { @@ -16,7 +17,12 @@ func ApplyProxyIfNeeded(policy *ent.StoragePolicy, srcUrl *url.URL) (*url.URL, e if err != nil { return nil, fmt.Errorf("failed to parse proxy URL: %w", err) } - proxy.Path = path.Join(proxy.Path, strings.TrimPrefix(srcUrl.Path, "/")) + if proxy.Path != "" && proxy.Path != "/" { + proxy.Path = path.Join(proxy.Path, strings.TrimPrefix(srcUrl.Path, "/")) + } else { + proxy.RawPath = srcUrl.RawPath + proxy.Path = srcUrl.Path + } q := proxy.Query() if len(q) == 0 { proxy.RawQuery = srcUrl.RawQuery