2

我正在使用 Carrierwave 上传图片,我的应用程序现在在 Heroku 上。除非我向 heroku 推送新的提交,否则图像会成功上传。当新的提交进入时,我在推送之前上传的图像似乎被删除了。有谁知道背后的原因以及如何解决这个问题?

更新: 问题变成了,在没有像 Amazon EC3 这样的存储服务器的 Heroku 上使用carrierwave。Heroku 不会将文件保存在默认情况下carrierwave 上传的公共文件夹中。

应用程序/上传程序/image_uploader.rb:

  def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

您需要将其更改为 tmp 文件夹中的某个位置,以便在每次提交后保留您的图像文件。我试图将其更改为

"#{Rails.root}/tmp/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"

但它不起作用。我检查了我的本地环境,图像成功存储在正确的位置。所以我想如果我只是将路线设置到正确的位置,这可能会奏效。有人可以帮我解决这个问题吗?

4

1 回答 1

1

由于 Heroku 不允许存储静态文件(除非它与应用程序本身相关联),因此您应该Carrierwave使用fog. 每次用户上传文件时,该文件都会自动上传到您的 S3 存储而不是 Heroku。

于 2013-07-04T04:22:55.593 回答