我从Amazon SDK传递给getSignedUrl的参数是什么关键

时间:2015-05-12 19:08:50

标签: javascript file-upload amazon-s3

我生成一个预先签名的网址,以便我可以将文件上传到S3存储桶。

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

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

如果我使用此生成的网址提交上传:

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

它返回此错误 SignatureDoesNotMatch

我错过了网址签名方法的内容吗?

1 个答案:

答案 0 :(得分:1)

刚想出来了。 签名URL的参数必须包含我在标题上发送的所有内容,而Key是文件名。

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

这解决了我的问题。