【问题标题】:Rails, Heroku, Paperclip and the uploading of files to S3Rails、Heroku、Paperclip 和将文件上传到 S3
【发布时间】:2012-02-22 17:22:23
【问题描述】:

我正在开发一个应用程序,它可以让用户提交我想象的大小约为 5mb 的 zip 文件。然后,我将手动获取这些文件并最终使用它们。

我正在研究使用 Heroku 建议的 Paperclip 来完成这项任务 - 完全绕过 heroku - 并且只是上传到 Amazon S3。

但是现在我搞砸了,看起来用户模型可以有一个附件,而不是多个。有没有更好的选择或者直接的方法可以知道我的存储桶名称和密钥等上传到 S3?

或者有没有办法配置回形针,以便用户可以拥有许多附件?我有点困惑我在做什么。

【问题讨论】:

  • 创建一个包含一个回形针附件的附件模型,然后将附件模型设为belong_to :user 和User has_many :attachments

标签: ruby-on-rails heroku amazon-s3 paperclip uploading


【解决方案1】:

您可以找到many available tutorials 来设置回形针处理多个附件。

【讨论】:

  • 看起来 tut 适用于 rails 2.1 或其他版本。你觉得会好吗?
  • 我的答案有三个教程。您可以检查并找到适合您环境的。
【解决方案2】:

Paperclip 支持无限数量的附件。

查看S3 POST API,这将需要在您的服务器上生成一些签名参数,但允许您直接上传到 S3。成功上传到 S3 后,您必须发出单独的请求以通知您的 heroku 服务器有一个新附件和附件文件名。通常,这需要修改 [attachment]_file_name 参数,以避免回形针不必要地再次上传文件。

总的来说,我发现 Paperclip 存在一些严重的设计缺陷,这意味着它需要不幸的黑客攻击才能很好地处理未通过插件上传的文件。我不得不完全破解这个东西。对于我的下一个项目,我将寻找一种替代方案,它可以更清晰地将附件与模型分开,并具有更模块化的存储机制。

也就是说,我提到的解决方案效果很好。棘手的部分是在模型上显式设置 [attachment]_file_name 字段,以便 Paperclip 认为该文件已经存储了原始文件。

【讨论】:

    【解决方案3】:

    回形针的流行替代品是CarrierWave。几个月前我在查看文件附件时,强烈推荐它。

    【讨论】:

      【解决方案4】:

      可以使用 S3 Post API,但这会以从安全角度来看非常容易受到攻击的形式泄露您的密钥。

      您应该使用直接 uploaderm 到 s3 js 库,这样您的密钥就会保密。

      谢谢

      【讨论】:

        猜你喜欢
        • 2015-10-29
        • 2012-09-23
        • 2012-12-30
        • 1970-01-01
        • 2017-09-03
        • 2011-06-29
        • 2014-01-18
        • 2017-01-15
        • 2014-05-07
        相关资源
        最近更新 更多