【问题标题】:Carrierwave + HerokuCarrierwave + Heroku
【发布时间】:2016-06-23 11:36:29
【问题描述】:

知道如何使用 Carrierwave 通过 Heroku 上传图片。

我将此添加到上传文件中:

def cache_dir
  "#{Rails.root}/tmp/uploads"
end

但图像仍然无法保存!图片上传后会保存,刷新页面后图片会中断。

任何帮助将不胜感激!谢谢

【问题讨论】:

    标签: ruby-on-rails heroku carrierwave


    【解决方案1】:

    我认为如果没有像 Amazon S3 这样的第三方存储服务,你不能使用 Heroku 和上传图片。

    https://devcenter.heroku.com/articles/s3

    Heroku 允许您将文件存储在 tmp 中,但只是为了发送到第 3 方服务。例如,您可以在carrierwave上传器类中设置

    存储:雾

    而不是默认的 :file 和设置上传到 AWS S3。还有其他选择。

    有一件事是,如果您在 Heroku 上使用免费层级实例,您的上传需要在一分钟内完成 - 我建议您设置直接将文件上传到 s3 帐户的设置。

    https://github.com/dwilkie/carrierwave_direct

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      Heroku 上的文件系统没有持久化。只有通过部署机制(git push)上传的文件才会“持久化”。 "#{Rails.root}/tmp/uploads" 文件夹中的其他内容将被删除。这就是它们消失的原因。


      我已回复similar question here。这是一个引用:

      您在 Heroku 上的测功机有一个“只读”文件系统。从某种意义上说,您的文件不会在您的 dyno 重新启动之间保留,并且不能保证它们将在任何两个请求之间保留。这是excerpt from the docs

      每个测功机都有自己的临时文件系统,不与任何其他测功机共享,一旦您断开连接,该文件系统就会被丢弃。该文件系统由 slug 存档填充,因此一次性 dynos 可以充分利用应用程序中部署的任何内容。

      您可以将#{Rails.root}/tmp 文件夹用作临时文件夹,但您需要将文件上传到某些外部存储(S3、某些 CDN 等)。 Heroku 有一些易于处理的插件。

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多