代码之家  ›  专栏  ›  技术社区  ›  Tony

为什么要将资产直接上传到S3?

  •  2
  • Tony  · 技术社区  · 15 年前

    我见过不少代码示例/插件,它们促进将资产直接上传到S3。例如,如果您有一个带有化身的用户对象,那么文件上传字段将直接加载到S3。

    我认为实现这一点的唯一方法是,如果用户对象已经在数据库中创建,并且您的S3 bucket+路径类似于

    user_avatars.domain.com/some/id/partition/medium.jpg
    

    而且,这似乎不适合大多数人,因为他们有很多联系。例如,如果一个用户有许多歌曲/MP3,您将在哪里存储它们,以及如何访问它们。

    同时,你的验证也会被取消。

    我在想直接上传到S3(或任何云)是个好主意的情况时遇到了困难,我希望人们能够澄清正确的用例,或者告诉我为什么我的逻辑不正确。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Justin Niessner    15 年前

    为什么要支付存储/带宽/备份等费用,而你却可以让云中的某个人来为你处理?

    S3(以及其他基于云的存储选项)为您解决了所有令人头痛的问题。您可以获得所需的所有存储、良好的分发网络(几乎肯定比您自己拥有的更好,除非您为高级CDN付费)和备份。

    允许用户直接上传到S3可以减轻更多的带宽负担。我可以看到跟踪问题,但是S3使得处理这种情况非常容易。如果你看一下直接上传的方法,你会发现你可以强制一个成功的上传重定向。

    然后,Amazon将以下内容传递给重定向处理程序: bucket key , etag

    有关详细信息,请查看此链接: Amazon S3: Browser-Based Uploads using POST

        2
  •  3
  •   Thomas Watson    14 年前

    如果您在Heroku上托管Rails应用程序,原因很可能是Heroku不允许上传大于4MB的文件:
    http://docs.heroku.com/s3#direct-upload

    只有

        3
  •  0
  •   juanpaco    12 年前

    记住web服务器是如何工作的。

    除非您使用的是Node.JS或Erlang可以实现的异步web设置(仅两个示例),否则 每一个 正在上载 .

    通过直接上传到S3,除了Justin Niessner提到的带宽节约和Thomas Watson提到的Heroku解决方法之外,您还让Amazon担心了这个问题。您可以让一个单进程web服务器有效地处理非常大的上传,因为它将实际的功能推送到Amazon上。

    编辑:修复打字错误