【问题标题】:How can I handle user-uploaded photo files for a Rails app (using paperclip) on Heroku?如何在 Heroku 上为 Rails 应用程序(使用回形针)处理用户上传的照片文件?
【发布时间】:2012-01-26 03:23:52
【问题描述】:

所以我正在制作一个允许用户创建项目的 Rails 应用程序,每个项目都有一个图像附件,通过 Paperclip gem 处理。默认情况下,Paperclip gem 以原始(和缩略图)形式将照片保存到公用文件夹。

鉴于照片可能相当大,我可以看到这在存储空间方面会很快失控。

我的问题:

1) Heroku 允许我为公共文件夹中的图像保留多少空间?

2) 如果 Heroku 只允许您在此文件夹中保存有限数量的数据(我确信确实如此),我如何处理可能包含大量图像的站点的照片存储?也许是远程?压缩? (细节会很好,因为我对图像存储完全陌生。)

【问题讨论】:

    标签: ruby-on-rails image heroku paperclip


    【解决方案1】:

    Heroku 为您的应用提供只读文件系统。使用 Amazon S3 存储您上传的图像。 Paperclip has great support for S3。看看这个Heroku guide

    【讨论】:

    • 好的,谢谢,但您能否提供一些资源或指南,以便我了解如何在 S3 中使用 Paperclip?
    • 另外,我是否也应该将 S3 用于我的普通 Postgres 数据库表?
    • 不知道如何回答,然后查找 Amazon S3 并阅读他们的指南...
    • 哦,好吧,最后一件事,那篇文章回答了我的问题……似乎目标是使用 S3 作为您的数据库,而不是 Heroku 上的数据库。是/否?
    • 没有。 Amazon S3 确实适用于资产。比如图片、视频、音频等。
    【解决方案2】:

    正如 Chris 所说,您会想要使用像 S3 这样的第三方服务,如果您最终使用 Paperclip,那么您最终会在您的模型中拥有类似于此示例的内容。

    has_attached_file :photo,
            :styles => { :thumb=> "100x100", :small  => "300x300" },
            :storage => :s3,
            :s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
            :path => "/:id/:style/:filename"
    

    在您的配置目录中,您将拥有一个 s3.yml 凭据文件,如下所示:

    development:
       bucket: blahblah
       access_key_id: sfoi40j8elkfv08hwo
       secret_access_key: DJyWuRtsfoi40j8elkfv08hwos0m8qt
    
    production:
       bucket: blahblah
       access_key_id: sfoi40j8elkfv08hwo
       secret_access_key: DJyWusfoi40j8elkfv08hwos0m8qt
    

    【讨论】:

    • 谢谢。克里斯的链接已经有这个信息。但是有一个问题:如果我应该只将 S3 用于图像附件,这是否意味着我的数据库内容(如我所有的表 [用户、项目、产品等])有一个 Amazon 解决方案?还是我不应该担心那些达到容量的问题?虽然这些记录只包含字符串、数字和时间戳,但似乎它们迟早会在 Heroku 达到限制,不是吗?
    • 不,您的数据库应该保留在 heroku 中,一旦达到限制,您可以每月 15 美元的价格获得 20gb 包。很快就很难填满。
    • 好的,谢谢。我试图弄清楚我的 items 表中每条记录有多大,但似乎可以忽略不计。
    • 为什么数据库不应该去亚马逊?太贵了?
    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多