我正在使用Carrierwave上传图片,我的应用程序现在正在Heroku上。 除非我将新提交推送到heroku,否则图像上传成功。我在推送之前上传的图像似乎在新的提交进入时被删除。有没有人知道背后的原因以及如何解决这个问题?
更新 问题变成了,在Heroku上使用carrierwave而没有像Amazon EC3这样的存储服务器。 Heroku不会将文件保存在公共文件夹中,默认情况下载波上载。
应用/上传/ 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}"
但它不起作用。我检查了我的本地环境,图像成功存储在正确的位置。所以我想如果我只是将路线设置到正确的位置,这可能会有效。有人可以帮我这个吗?
答案 0 :(得分:1)
由于Heroku不允许存储静态文件(除非它与应用程序本身相关联),您应该使用Carrierwave
将fog
上传到远程存储库(例如Amazon S3)。每当用户上传文件时,该文件将自动上传到您的S3存储而不是Heroku。