【问题标题】:How can I prevent double file uploading with Amazon S3?如何防止使用 Amazon S3 上传双重文件?
【发布时间】: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


【解决方案1】:

除非有特殊原因不使用回形针,否则我强烈推荐它。与延迟作业和延迟回形针结合使用,用户将文件上传到您的服务器文件系统,您可以在其中执行所需的任何验证。然后延迟的作业处理并将其存储在 s3 上。真的,真的很容易设置和更好的用户体验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多