From 75fd0ee185e879cfcf517510cb6a09914ad7bbb1 Mon Sep 17 00:00:00 2001 From: Andy Hsu Date: Sun, 9 Apr 2023 19:25:52 +0800 Subject: [PATCH] feat(s3): optional remove bucket name from path (close #4069) --- drivers/s3/driver.go | 4 ++++ drivers/s3/meta.go | 1 + 2 files changed, 5 insertions(+) diff --git a/drivers/s3/driver.go b/drivers/s3/driver.go index 9b675c94f34..9388d04e004 100644 --- a/drivers/s3/driver.go +++ b/drivers/s3/driver.go @@ -7,6 +7,7 @@ import ( "io" "net/url" stdpath "path" + "strings" "time" "github.com/alist-org/alist/v3/internal/driver" @@ -75,6 +76,9 @@ func (d *S3) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*mo if d.CustomHost != "" { err = req.Build() link = req.HTTPRequest.URL.String() + if d.RemoveBucket { + link = strings.Replace(link, "/"+d.Bucket, "", 1) + } } else { link, err = req.Presign(time.Hour * time.Duration(d.SignURLExpire)) } diff --git a/drivers/s3/meta.go b/drivers/s3/meta.go index ddebb19652c..066bce1c37c 100644 --- a/drivers/s3/meta.go +++ b/drivers/s3/meta.go @@ -17,6 +17,7 @@ type Addition struct { Placeholder string `json:"placeholder"` ForcePathStyle bool `json:"force_path_style"` ListObjectVersion string `json:"list_object_version" type:"select" options:"v1,v2" default:"v1"` + RemoveBucket bool `json:"remove_bucket" help:"Remove bucket name from path when using custom host."` } var config = driver.Config{