【问题标题】:File upload to Heroku not working [duplicate]文件上传到 Heroku 不起作用 [重复]
【发布时间】:2014-01-24 04:02:22
【问题描述】:

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

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

这绝对适用于我的本地主机环境。

我需要启用什么才能使其正常工作吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 文件上传确实可以在 Heroku 上工作,但是一旦 dyno 重新启动,文件就会被删除。
    • 对。谢谢,不知道 :) 不过,没有 S3 就不会去了。
    • 是的,你必须这样做。除非您只需要处理文件。
    【解决方案2】:

    很多人在开始使用 Heroku 时都会遇到这个错误,包括我在内!

    您不能在 Heroku 本地存储文件的原因是这不是 Heroku 的工作方式。 Heroku 获取您的 git 存储库的副本并将其捆绑到“slug”中,然后在其服务器上运行。当 dyno(虚拟 UNIX 实例)重新启动时,您的 slug 之外的任何内容(即未存储在 git 存储库中的内容)都将丢失。

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

    所以如果你想存储通过表单上传的文件,你需要使用外部存储服务。我喜欢 Amazon S3,因为使用 Paperclip 与 Heroku 集成非常简单,正如另一个答案中的链接所提到的那样。

    【讨论】:

      猜你喜欢
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2018-03-20
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多