我正在尝试从应用程序上传图像,然后尝试从另一个页面访问它。用于上传图片的代码如下:
uploaded_io = params[:recipe][:picture]
File.open(Rails.root.join('recipe_images',uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
在本地开发环境中,这很好用,但是当我在Heroku上加载应用程序并尝试访问映像时,出现以下错误:
(No such file or directory @ rb_sysopen - /app/recipe_images/logo.jpeg):
我尝试在recipe_images
文件夹中创建文件夹app
,但是再次遇到相同的问题。
要访问上传的图像,我在视图中使用以下代码:
<%= image_tag("recipe_images/logo.jpeg"%>
这再次适用于开发环境,但由于映像不存在而无法在生产中使用。
为什么在Heroku上不起作用?
答案 0 :(得分:3)
我不确定为什么在接受图像后为什么这种方法不起作用,但是无论如何您都不应该将上传的图像存储在Heroku的本地文件系统中。该文件系统is ephemeral:您对它所做的任何更改都将在下次您的dyno重新启动时丢失。 happens frequently(每天至少一次)。
相反,Heroku recommends使用Amazon S3之类的东西进行上传并提供a guide for doing so with Rails。