通过RoR应用程序访问上传到heroku的图像时出现问题

时间:2019-06-07 12:21:03

标签: ruby-on-rails heroku

我正在尝试从应用程序上传图像,然后尝试从另一个页面访问它。用于上传图片的代码如下:

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上不起作用?

1 个答案:

答案 0 :(得分:3)

我不确定为什么在接受图像后为什么这种方法不起作用,但是无论如何您都不应该将上传的图像存储在Heroku的本地文件系统中。该文件系统is ephemeral:您对它所做的任何更改都将在下次您的dyno重新启动时丢失。 happens frequently(每天至少一次)。

相反,Heroku recommends使用Amazon S3之类的东西进行上传并提供a guide for doing so with Rails