我正在使用ng-file-upload将文件发送到我的角度应用程序中的AWS-S3。
Upload.http({
url: '/presignedurl',
headers : {
'Content-Type': file.type
},
data: file
})
它给了我403 Forbidden错误说
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
答案 0 :(得分:2)
AWS S3需要二进制/八位字节流,因此您可以使用JavaScript中的FileReader类将文件数据转换为二进制/八位字节流
用此
替换您的代码var reader = new FileReader();
var xhr = new XMLHttpRequest();
xhr.open("PUT", $scope.url);
reader.onload = function(evt) {
xhr.send(evt.target.result);
};
reader.readAsArrayBuffer($files[file]);
答案 1 :(得分:0)
您可以尝试这样的事情
var config = {
url: result.signed_request,
headers: {
"Content-Type": files[0].type != '' files[0].type : 'application/octet-stream'
},
method: 'PUT',
data: files[0]
};
Upload.http(config);