我正在使用lambda生成预签名的特征,以将文件上传到S3存储桶。当我将Lambda返回的签名与Postman / CURL一起使用时,它可以工作。但是,当我尝试从程序发出PUT请求时,它将本地主机附加到预签名URL。我在本地计算机上使用IIS作为Web服务器。 可能与IIS配置有关吗?还是我在代码或应用程序配置本身中做错了什么?
我的代码如下:
const xhr = new XMLHttpRequest();
xhr.open('PUT', preSignedURL);
xhr.onreadystatechange = () => {
if(xhr.readyState === 4){
if(xhr.status === 200){
alert('File Ready to n upload. xhr.status: ' + xhr.status + 'xhrstatustext:' +xhr.statusText);
}
else{
alert('Could not upload file.');
}
}
};
xhr.send(file);
答案 0 :(得分:0)
我自己弄清楚了。 lambda函数返回的URL格式不正确。我要做的就是删除开头和结尾的引号,然后将文件上传到S3。
var preSignedURL = preSignedURL.substring(1,preSignedURL.length-1);
干杯!