javascript - 将文件从浏览器上传到 S3

标签 javascript angularjs amazon-s3

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

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

我相信我可以 POST 到我的服务器,然后将对象放在亚马逊服务器上,但我更喜欢从浏览器中执行此操作。

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

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

最佳答案

Amazon 有一个指南 ( here ),介绍如何将文件 POST 上传到您的 S3 存储桶中。它依赖于使用您的 AWS 私钥签名的输入

。您可以指定对目标目录的限制以及文件大小限制。

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

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

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

关于javascript - 将文件从浏览器上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460154/

相关文章:

javascript - 如何确保 HTML 输入仍然是必需的?

javascript - ng-show 的 Angular 初始转换,使用 $timeout 和 $compile

javascript - angularjs $window.onclick 比 ng-click 表现更好

php - 确保 S3 中的随 secret 钥名称,同时由用户维护原始文件名

java - AWS S3 Presign Url 总是同时过期?

go - 使用适用于 Go 的 AWS 开发工具包使用完整 URI 从 S3 下载文件

javascript - xpages 文档默认设置为只读加载 - 有些以编辑模式加载

javascript - 仅序列化更改的表单元素时如何处理空数组

javascript - 截取 "invisible"网页的屏幕截图

angularjs - 用户按下回车键时的 Angular ui-grid 过滤器