我应该将什么密钥作为参数从 Amazon SDK 传递给 getSignedUrl

What key shoud i pass as parameter to getSignedUrl from Amazon SDK

我正在生成预签名 url 以便我可以将文件上传到 S3 存储桶。

var params = {Bucket: 'xxxxxxx', Key: 'key', Expires: 60};
var url = s3.getSignedUrl('putObject', params);
console.log('The URL is', url);

需要 Key 参数,但我在文档中找不到如何生成它。

如果我使用生成的 URL:

提交上传
xhr.open("PUT", url);
xhr.setRequestHeader('Content-Type', files[0].type);
xhr.setRequestHeader('x-amz-acl', 'authenticated-read');
xhr.send(files[0]);

它returns这个错误SignatureDoesNotMatch

我在 url 签名方法上遗漏了什么吗?

刚刚弄明白了。 签名 URL 的参数必须包含我在 header 上发送的所有内容,密钥是文件名。

var params = {Bucket: 'xxxxxxx', Key: 'filename.ext', Expires: 60, ACL:'authenticated-read', ContentType: 'applicattion/xxxxx'};

这解决了我的问题。