我已经在Heroku上部署了ROR应用程序,但文件上传似乎根本不起作用。
我确实在表单上设置了multipart => true
。
这肯定适用于我的localhost环境。
我需要启用哪些功能才能使其正常工作?
答案 0 :(得分:2)
Heroku不接受上次检查的文件上传。您需要Amazon S3或类似的东西才能接受这些文件。如果您将文件上传到Heroku,您可以通过Tempfile类在请求期间访问它,但它不会被保存。
答案 1 :(得分:2)
当他们开始使用Heroku时,这个错误让很多人感到高兴,包括我!
你无法在Heroku本地存储文件的原因是这不是Heroku的工作方式。 Heroku会获取您的git存储库的副本,并将其捆绑成一个“slug”,然后在其服务器上运行。当dyno(虚拟UNIX实例)重新启动时,你的slug之外的任何东西(即没有存储在你的git repo中)都会丢失。
您可以通过使用heroku run rails c
启动控制台并使用Ruby的File
对象创建并保存新文件来查看此信息。新文件将正确保存,您可以执行require
之类的操作或从中读取,但如果关闭并重新打开控制台窗口,文件将会消失。
因此,如果要存储通过表单上载的文件,则需要使用外部存储服务。我喜欢Amazon S3,因为使用Paperclip与Heroku集成非常简单,正如其他答案中提到的链接一样。