2

我为我的 Angular 应用程序安装了 AWS Cognito,我正在尝试将s3.putObject一些方法连接到 ng-file-uploadUpload服务中。

我想使用 ng-file-upload 的Upload.upload()方法,但我不知道如何将现有的经过身份验证的连接与 Cognito 一起使用。这个想法是使用 ng-file-upload 的拖放,然后上传将使用现有的 Cognito 连接上传到 s3。我怎样才能做到这一点?我之所以要使用 ng-file-upload 的Upload.upload()方法是为了帮助保留一些功能,例如进度条(如果不正确,请纠正我)。

4

1 回答 1

0

我假设您正在尝试直接从单页应用程序中的客户端上传到 S3 存储桶。如果是这样,您可以先对 S3 URL 进行预签名,然后尝试在 ng-file-upload 中使用它。预签名 URL 允许您向可能无法直接访问执行操作的其他用户授予一次性访问权限。预签名会生成一个使用您的凭据签名的有效 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 文档

于 2015-11-30T08:18:40.577 回答