我试图更改我从S3下载的文件的名称,但它不断将存储桶密钥作为文件名。
我使用此功能获取签名URL以从我的S3存储桶中下载内容。
func GetFileLink(url, filename string) (string, error) {
svc := s3.New(some params)
params := &s3.GetObjectInput{
Bucket: aws.String(a bucket name),
Key: aws.String(key),
}
req, _ := svc.GetObjectRequest(params)
req.SignedHeaderVals = make(map[string][]string)
req.SignedHeaderVals.Add("Content-Disposition", "filename=the filename I want")
str, err := req.Presign(15 * time.Minute)
if err != nil {
global.Log("[AWS GET LINK]:", params, err)
}
return str, err
}
我在我的HTML文件中使用它来下载另一个名称的文件:
<a href="Link given by the function" download="the filename I want">Download the file.</a>
但我一直得到名为bucket key的文件。如何更改正在下载的文件的名称?
答案 0 :(得分:6)
根据Amazon GET Object Docs,您需要的参数实际为response-content-disposition
。
根据GetObjectInput文档,GetObjectInput
有一个参数来设置ResponseContentDisposition
值。
尝试:
params := &s3.GetObjectInput{
Bucket: aws.String(a bucket name),
Key: aws.String(key),
ResponseContentDisposition: "attachment; filename=the filename I want",
}
req, _ := svc.GetObjectRequest(params)
str, err := req.Presign(15 * time.Minute)
(注意:不需要使用SignedHeaderVals
)。
感谢迈克尔对我原来的答案进行更正。