文件上传到Heroku不起作用

时间:2014-01-24 04:02:22

标签: ruby-on-rails ruby heroku ruby-on-rails-4

我已经在Heroku上部署了ROR应用程序,但文件上传似乎根本不起作用。

我确实在表单上设置了multipart => true

这肯定适用于我的localhost环境。

我需要启用哪些功能才能使其正常工作?

2 个答案:

答案 0 :(得分:2)

Heroku不接受上次检查的文件上传。您需要Amazon S3或类似的东西才能接受这些文件。如果您将文件上传到Heroku,您可以通过Tempfile类在请求期间访问它,但它不会被保存。

https://devcenter.heroku.com/articles/paperclip-s3

https://devcenter.heroku.com/articles/s3

答案 1 :(得分:2)

当他们开始使用Heroku时,这个错误让很多人感到高兴,包括我!

你无法在Heroku本地存储文件的原因是这不是Heroku的工作方式。 Heroku会获取您的git存储库的副本,并将其捆绑成一个“slug”,然后在其服务器上运行。当dyno(虚拟UNIX实例)重新启动时,你的slug之外的任何东西(即没有存储在你的git repo中)都会丢失。

您可以通过使用heroku run rails c启动控制台并使用Ruby的File对象创建并保存新文件来查看此信息。新文件将正确保存,您可以执行require之类的操作或从中读取,但如果关闭并重新打开控制台窗口,文件将会消失。

因此,如果要存储通过表单上载的文件,则需要使用外部存储服务。我喜欢Amazon S3,因为使用Paperclip与Heroku集成非常简单,正如其他答案中提到的链接一样。