diff --git a/drivers/s3/driver.go b/drivers/s3/driver.go index 9b675c94..9388d04e 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 ddebb196..066bce1c 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{