【发布时间】:2014-01-24 04:02:22
【问题描述】:
我在 Heroku 上部署了 ROR 应用程序,但文件上传似乎根本不起作用。
我确实在表格上设置了multipart => true。
这绝对适用于我的本地主机环境。
我需要启用什么才能使其正常工作吗?
【问题讨论】:
标签: ruby-on-rails ruby heroku ruby-on-rails-4
我在 Heroku 上部署了 ROR 应用程序,但文件上传似乎根本不起作用。
我确实在表格上设置了multipart => true。
这绝对适用于我的本地主机环境。
我需要启用什么才能使其正常工作吗?
【问题讨论】:
标签: ruby-on-rails ruby heroku ruby-on-rails-4
Heroku 不接受我上次检查的文件上传。您需要一个 Amazon S3 或类似的东西来接受这些文件。如果您将文件上传到 Heroku,您可以在请求期间通过 Tempfile 类访问它,但它不会被保存。
【讨论】:
很多人在开始使用 Heroku 时都会遇到这个错误,包括我在内!
您不能在 Heroku 本地存储文件的原因是这不是 Heroku 的工作方式。 Heroku 获取您的 git 存储库的副本并将其捆绑到“slug”中,然后在其服务器上运行。当 dyno(虚拟 UNIX 实例)重新启动时,您的 slug 之外的任何内容(即未存储在 git 存储库中的内容)都将丢失。
您可以通过使用heroku run rails c 启动控制台并使用Ruby 的File 对象创建并保存一个新文件来看到这一点。新文件将正确保存,您可以执行require 之类的操作或从中读取,但如果您关闭并重新打开控制台窗口,该文件将消失。
所以如果你想存储通过表单上传的文件,你需要使用外部存储服务。我喜欢 Amazon S3,因为使用 Paperclip 与 Heroku 集成非常简单,正如另一个答案中的链接所提到的那样。
【讨论】: