将文件从浏览器上传到S3

时间:2013-10-18 22:43:26

标签: javascript angularjs amazon-s3

我有一个预先签名的网址,允许您将文档对象放入S3。 http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjectPreSignedURLDotNetSDK.html

如何使用javascript将文件从浏览器放入S3?我正在使用angular,但我愿意使用任何javascript库。

我相信我可以POST到我的服务器,然后将该对象放在亚马逊服务器上,但我更愿意从浏览器中进行。

我更改了S3上的CORS设置以允许PUT。

我打算使用角度文件上传,但它很难编码为POST而不是PUT。 https://github.com/danialfarid/angular-file-upload

1 个答案:

答案 0 :(得分:1)

亚马逊有一个指南(here),介绍如何将文件POST上传到S3存储桶中。它依赖于输入< form>使用您的AWS私钥签名。您可以指定目标目录的限制以及文件大小限制。

使用起来有点烦人,因为你必须复制< form>中的大部分字段。和签署的政策,但似乎有效。

在POST之后,S3会将浏览器重定向到您在表单中指定的URL(带有指定上载文件名称的参数等)。这对于Angular网站来说并不理想,Angular网站往往是“应用程序”而不是一组离散页面,但您可能会使用它。

在我的Angular网站上,我使用$ http.post()在Javascript中进行了POST,并传递了所有相应的表单数据。不幸的是,即使上传实际上成功,我总是会收到“取消”的错误。在我的情况下,我只是通过使用$ http.get()下载文件并将其与原始数据进行比较来进行双重检查......但这只是一个可行的解决方案,因为我的文件只有几KB。