我正在使用从AWS Cognito收到的临时凭证将文件上传到S3存储桶,我真的很沮丧。我可以访问access-token
,但我在试图初始化AWS S3客户端时迷路了。现在我将access-token
和idToken
存储在cookie中(虽然这会改变)。
当我到达我的上传页面时,我有一个文件输入和文件上传按钮,并希望上传按钮上的文件...但我无法弄清楚如何做到这一点,我感觉真的,真的,愚蠢的涉及文档无济于事。
到目前为止,这是我的代码:
(function(){
var fileSource = $("#fileSource");
fileSource.on("change", function(){
var filePath = $(this).val().split("\\");
$("#upload-file-info").html(filePath[filePath.length - 1]);
});
console.log("accessToken", accessToken);
console.log("idToken", idToken);
AWS.config.region = Region;
var bucket = new AWS.S3({
params: {
Bucket: bucketName + "/" + idToken["cognito:username"]
}
});
console.log(bucket);
$("#uploadButton").on("click", function(){
if(!window.FileReader){
return alert("FileReader API is not supported by your browser.");
}
var input = fileSource[0];
if(input.files && input.files[0]){
file = input.files[0];
fr = new FileReader();
fr.onload = function () {
var objKey = bucketName + "/" + idToken["cognito:username"] + '/' + file.name;
var params = {
Key: objKey,
ContentType: file.type,
Body: file
};
console.log(params);
bucket.putObject(params, function (err, data) {
if (err) {
console.log("arguments", arguments)
} else {
console.log("arguments", arguments)
}
});
};
fr.readAsDataURL( file );
} else {
alert("File not selected or browser incompatible.")
}
});
})();
bucketName
在另一个文件中定义,检索和解码cookie的方法也是如此。
如果有人能指出我正确的方向,我会感激,因为我知道我错过了什么!即使是指向某个人工作的回购的指针也会有所帮助。
(我喜欢这种无服务器的东西的想法,但这对我改变这样的范例感到很头疼)
答案 0 :(得分:1)
找到我自己的大部分答案,同时仍然拖着the documentation拖延。基本上,Javascript SDK会将我需要的大部分内容放入本地存储中,因此不需要使用cookie(我只是在离开cookie并为自己使用本地存储,然后检查本地存储;-) )。虽然我还没有,但是我已经取得了一些进展,我可能不得不在以后再问一个问题。