Carrierwave + Heroku

Carrierwave + Heroku

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

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

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

但图像仍然无法保存!上传图片后,它会保存,一旦你刷新页面,图片就会损坏。

如有任何帮助,我们将不胜感激!谢谢

我认为如果没有像 Amazon S3 这样的第 3 方存储服务,您将无法使用 Heroku 和上传图像。

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

Heroku 允许您将文件存储在 tmp 中,但只是为了发送到第 3 方服务。在carrierwave uploader里面class你可以设置例如

存储:雾

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

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

https://github.com/dwilkie/carrierwave_direct

希望对你有帮助

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


我已经回答了 。这是一个引用:

您在 Heroku 上的 dyno 有一个 "read-only" 文件系统。从某种意义上说,您的文件不会在您的 dyno 重新启动之间持续存在,并且不能保证它们会在任何两个请求之间持续存在。这是一个 excerpt from the docs:

Each dyno has its own ephemeral file system, not shared with any other dyno, that is discarded as soon as you disconnect. This file system is populated with the slug archive so one-off dynos can make full use of anything deployed in the application.

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