Angular.js和Amazon S3 - 如何上传文件?

时间:2013-04-19 12:08:54

标签: angularjs amazon-s3 angularjs-directive

我在Angular.js中有一个应用程序。事实上,我在旧网站上做了更新,改为Angular。

在旧版本中,我使用Uploadfy jquery组件来在Amazon S3中上传。但现在,使用Angular,我无法使用它。

我想使用指令“ngUpload”。但我不知道该怎么做。 有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:7)

如果在POST数据中包含有效的S3参数,则可以从HTML表单直接上传到S3存储桶。这些被称为预授权的HTML POST表单。

有效参数值是通过对AWS API的API调用在您自己的托管服务器上生成的。然后将值作为隐藏输入字段添加到上载表单中。

以下是您在表单中的样子:

  <input type="hidden" name="AWSAccessKeyId" value="YOUR_AWS_ACCESS_KEY"> 
  <input type="hidden" name="acl" value="private"> 
  <input type="hidden" name="success_action_redirect" value="http://yourdomain/">
  <input type="hidden" name="policy" value="YOUR_POLICY_DOCUMENT_BASE64_ENCODED">
  <input type="hidden" name="signature" value="YOUR_CALCULATED_SIGNATURE">

亚马逊提供Java,Python和Ruby的示例代码。

http://aws.amazon.com/articles/1434

答案 1 :(得分:5)

您可以使用angular-file-upload轻量级角度指令,该指令支持文件进度和文件丢弃。

您可以在此处关注Amazon S3问题,其中包含示例代码,以及如何将所有这些数据与文件上传一起发送: https://github.com/danialfarid/angular-file-upload/issues/23

S3上传应该适用于上面的1.1.1版。

另一个相关问题:https://github.com/danialfarid/angular-file-upload/issues/23

答案 2 :(得分:2)

你可以使用&#34; public&#34;如果要在上载后处理文件并将其移动到其他位置,请使用AWS JS SDK的IAM帐户和API密钥。例如,处理和存储上载的文件。

使用Angular,AWS S3 JS SDK,CORS和IAM帐户。有一些设置涉及锁定它,所以它不会被滥用。

我在此处记录了设置此过程的过程:http://www.cheynewallace.com/uploading-to-s3-with-angularjs/

答案 3 :(得分:0)

一个如果最好的s3-file-upload angular指令带有动态数据绑定,回调函数 - https://github.com/vinayvnvv/s3FileUpload