1

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

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

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

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

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

4

1 回答 1

1

Amazon 有一个指南(此处)描述了如何将文件上传到您的 S3 存储桶中。它依赖于使用您的 AWS 私钥签名的输入 <form>。您可以指定对目标目录的限制以及文件大小限制。

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

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

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

于 2013-10-19T02:33:28.070 回答