【发布时间】:2011-03-03 15:48:11
【问题描述】:
我决定使用 Amazon S3 来存储我正在创建的应用程序的文档。我遇到的一个问题是,当我需要将文件上传到 S3 时,我需要在我的应用程序中创建一个文档对象,以便我的用户可以执行 CRUD 操作。
一种解决方案是允许双重上传。用户将文档上传到我的 Rails 应用程序所在的服务器。我验证并创建对象,然后将其传递给 S3。一个问题是进度指标变得更加复杂。使用大多数开箱即用的插件会向客户端显示文件已完成上传,因为它在我的服务器上,但是当文件从我的服务器传输到 S3 时会有相当长的延迟。这也引入了不必要的带宽(至少看起来没有必要)
我正在考虑的另一种解决方案是使用一个 AJAX 请求将文件直接上传到 S3,然后在成功后发出第二个 AJAX 请求以将对象存储在我的数据库中。这里的一个问题是我必须在上传文件后对其进行验证,这意味着如果验证失败,我必须在 S3 中运行一些清理代码。
两者看起来同样凌乱。
有没有人不介意分享一些更优雅的工作?我想这是当今“云存储”非常流行的常见情况。也许我看错了。
【问题讨论】:
-
我问了一个类似的问题:stackoverflow.com/questions/5796468/… 问题很相似,因为我正在尝试解决相同的问题,但我想到了一种使用分块来消除双重时间的方法。您的应用程序在 EC2 上吗?我的是,但重新保存大文件仍然很慢。
标签: ruby-on-rails file-upload amazon-s3