我正在尝试将视频文件上传到AWS S3存储桶,而无需用户通过谷歌或其他任何内容进行登录(用户不必做任何事情!)This page建议有3个选项:
第3个选项适用于我,但在生产环境中不可接受。 第一和第二选项都需要大量的麻烦,不仅对开发人员而且对于用户而言,如果我理解正确的话。
// Not safe, but working!
/*AWS.config.update({
accessKeyId: "myaccesskey",
secretAccessKey: "mysecretkey",
"region": "eu-central-1"
});*/
AWS.config.region = 'eu-central-1';
var s3 = new AWS.S3();
var params = {
Bucket: 'mybucketname',
Key: file.name,
Body: file
};
s3.putObject(params, function (err, res) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
我也尝试从json文件加载凭据,但这也不起作用。
AWS.config.loadFromPath( './ config.json');
这种方法的错误是:
aws-sdk-2.4.13.min.js?ver = 0.0.1:5未捕获的TypeError: n.FileSystemCredentials不是构造函数
我是否需要使用服务器脚本上传文件? (在我的JS和S3之间创建一个代理)
任何帮助表示感谢。
感谢。
编辑:有人建议我跟踪http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html通过浏览器/ js发出安全请求。也许还有人试过吗?任何JS示例在哪里?
答案 0 :(得分:0)
发布答案(如果可以这样调用),因为我注意到这没有回答:我实际上使用服务器端AWS库来完成这项工作,并且变量被安全地存储为ENV变量。此外,我改变了一些功能,所以我不需要使用JS来完成这项工作。
所以不需要摆弄上面提到的第一和第二选项。 如果有人找到上述两种方法的JS解决方案,我很乐意接受他们的回答。