我已为我的Angular应用程序安装了AWS Cognito,并且我试图将s3.putObject
某些内容挂钩到ng-file-upload Upload
服务中。
我想使用ng-file-upload的Upload.upload()
方法,但我不知道如何使用与Cognito的现有经过身份验证的连接。我们的想法是使用ng-file-upload的拖放操作,然后上传将使用现有的Cognito连接上传到s3。我怎样才能做到这一点?我想使用ng-file-upload的Upload.upload()
方法的原因是为了帮助保留一些功能,如进度条(如果这不正确,请纠正我)。
答案 0 :(得分:0)
我假设您正尝试直接从单页应用中的客户端上传到S3存储桶。如果是这样,您可以先预先签署S3 URL,然后尝试在ng-file-upload中使用它。预签名URL允许您向可能无法直接访问以执行操作的其他用户提供一次性访问权限。预签名会生成使用您的凭据签名的有效URL,任何用户都可以访问。默认情况下,SDK生成的URL将在15分钟后过期。
要生成一个简单的预签名URL,允许任何用户将对象放入您拥有的存储桶中,您可以使用以下调用来获取getSignedUrl():
//Initialize the SDK with Cognito Credentials
var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myKey'};
var url = s3.getSignedUrl('putObject', params);
console.log("Use this url in ng-file-upload", url);
有关获取预签名URL的更多信息,请参阅此wiki http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html#Amazon_S3__Getting_a_pre-signed_URL_for_a_PUT_operation_with_a_specific_payload并查阅ng-file-upload文档