我使用AWS Javascript SDK将文件放入S3。以下代码旨在将用户头像上载到S3。我现在正在硬编码accessKeyId和secretAccessKey,并从网络表单上取文件和密钥进行上传。
document.getElementById("upload-button").onclick = function() {
const key = document.getElementById("key-text").value;
var file = document.getElementById("file-chooser").files[0];
const S3 = new AWS.S3({
signatureVersion: "v4",
apiVersion: '2006-03-01',
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY',
region: 'us-west-2'
})
S3.putObject({
Key: key,
Bucket: 'my-bucket-name',
Body: file,
}, (err, data) => {
if (err) {
alert("Error: " + err);
} else {
alert("Upload successful: " + data);
}
})
}
document.getElementById("upload-button").onclick = function() {
const key = document.getElementById("key-text").value;
var file = document.getElementById("file-chooser").files[0];
const S3 = new AWS.S3({`
signatureVersion: "v4",
apiVersion: '2006-03-01',
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY',
region: 'us-west-2'
})
S3.putObject({
Key: key,
Bucket: 'ilarp-data-prod-1',
Body: file,
}, (err, data) => {
if (err) {
alert("Error: " + err);
} else {
alert("Upload successful: " + data);
}
})
}
上面的代码给我一个SignatureDoesNotMatch的错误返回我对此感到困惑,因为我以为我让API进行签名,而早期版本(我遗憾地无法重现)并没有给我这个错误。
答案 0 :(得分:1)
事实证明这是飞行员错误。我与ACCESS_KEY_ID和SECRET_ACCESS_KEY不匹配。即使我十几次检查了这件事,我仍然弄错了。对于那个很抱歉。如果你来到这里想知道这一点,请知道每个程序员偶尔会犯一个愚蠢的错误。