gpt4 book ai didi

node.js - S3 使用 NodeJS 强制文件下载

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:09 25 4
gpt4 key购买 nike

我尝试使用 GET 请求参数response-content-disposition 强制从 Amazon S3 下载文件。

我首先创建了一个签名 URL,当我想要查看该文件时,它可以正常工作。

然后,我尝试使用 response-content-disposition header 重定向到那里。这是我的代码:

res.writeHead(302, {
'response-content-disposition': 'attachment',
'Location': 'http://s3-eu-west-1.amazonaws.com/mybucket/test/myfile.txt?Expires=1501018110&AWSAccessKeyId=XXXXXX&Signature=XXXXX',
});

但是,这只是重定向到该文件,并不下载它。

此外,当我尝试使用 response-content-disposition 作为 GET 变量访问文件时:

http://s3-eu-west-1.amazonaws.com/mybucket/test/myfile.txt?Expires=1501018110&AWSAccessKeyId=XXXXXX&Signature=XXXXX&response-content-disposition=attachment

..我收到以下回复:

我们计算的请求签名与您提供的签名不匹配。检查您的 key 和签名方法。

最佳答案

您好,您可以强制下载文件或使用以下示例代码更改文件名。此示例代码是使用 preSignedUrl 下载文件。

这里重要的是 getSignedUrl 方法参数中的 ResponseContentDisposition 键。无需在请求中传递任何 header ,例如内容处置..

var aws = require('aws-sdk');

var s3 = new aws.S3();
exports.handler = function (event, context) {
var params = {
Bucket: event.bucket,
Key: event.key,
ResponseContentDisposition :'attachment;filename=' + 'myprefix' + event.key
};
s3.getSignedUrl('getObject', params, function (err, url) {
if (err) {
console.log(JSON.stringify(err));
context.fail(err);
}
else {
context.succeed(url);
}
});
};

关于node.js - S3 使用 NodeJS 强制文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com