feat(s3): using internal download method in proxy (#6988)
This commit is contained in:
parent
3dc250cc37
commit
94937db491
@ -4,6 +4,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/alist-org/alist/v3/server/common"
|
||||||
"io"
|
"io"
|
||||||
"net/url"
|
"net/url"
|
||||||
stdpath "path"
|
stdpath "path"
|
||||||
@ -95,23 +96,27 @@ func (d *S3) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*mo
|
|||||||
input.ResponseContentDisposition = &disposition
|
input.ResponseContentDisposition = &disposition
|
||||||
}
|
}
|
||||||
req, _ := d.linkClient.GetObjectRequest(input)
|
req, _ := d.linkClient.GetObjectRequest(input)
|
||||||
var link string
|
var link model.Link
|
||||||
var err error
|
var err error
|
||||||
if d.CustomHost != "" {
|
if d.CustomHost != "" {
|
||||||
err = req.Build()
|
err = req.Build()
|
||||||
link = req.HTTPRequest.URL.String()
|
link.URL = req.HTTPRequest.URL.String()
|
||||||
if d.RemoveBucket {
|
if d.RemoveBucket {
|
||||||
link = strings.Replace(link, "/"+d.Bucket, "", 1)
|
link.URL = strings.Replace(link.URL, "/"+d.Bucket, "", 1)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
link, err = req.Presign(time.Hour * time.Duration(d.SignURLExpire))
|
if common.ShouldProxy(d, filename) {
|
||||||
|
err = req.Sign()
|
||||||
|
link.URL = req.HTTPRequest.URL.String()
|
||||||
|
link.Header = req.HTTPRequest.Header
|
||||||
|
} else {
|
||||||
|
link.URL, err = req.Presign(time.Hour * time.Duration(d.SignURLExpire))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &model.Link{
|
return &link, nil
|
||||||
URL: link,
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *S3) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error {
|
func (d *S3) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user