我生成一个预先签名的网址,以便我可以将文件上传到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
我错过了网址签名方法的内容吗?
答案 0 :(得分:1)
刚想出来了。 签名URL的参数必须包含我在标题上发送的所有内容,而Key是文件名。
var params = {Bucket: 'xxxxxxx', Key: 'filename.ext', Expires: 60, ACL:'authenticated-read', ContentType: 'applicattion/xxxxx'};
这解决了我的问题。