【问题标题】:User uploading files to Heroku用户上传文件到 Heroku
【发布时间】:2012-08-17 08:32:43
【问题描述】:

在我的应用中,用户可以上传他们的徽标以显示在他们的个人资料页面上(使用 Carrierwave + s3)。

在我的本地应用中,图像路径是这样的:https://s3.amazonaws.com/iemarkt/uploads/user/logo/squaredeye_336x336.jpg

但是在我部署的 Heroku 应用中,图像路径是“/assets/”,这会导致错误并且不允许用户上传图像。

每当我尝试在我的 Heroku 应用上使用 Carrierwave + s3 上传文件时,我都会收到此错误“我们很抱歉,但出了点问题。”,查看我的日志时,我看到了这个错误:

    2012-08-20T21:18:56+00:00 app[web.1]: Started GET "/assets/" for 24.90.124.181 at 2012-08-20 21:18:56 +00002012-08-20T21:18:56+00:00 app[web.1]:2012-08-20T21:18:56+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets"):

我的商店目录

    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/"

我在 production.rb 中取消了对这一行的注释(我读到 Heroku 使用 Nginx,我不知道是否需要做其他事情才能让 Nginx 工作。)

  config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

我真的不知道为什么路径没有指向我的 s3 帐户。

这是我的app

【问题讨论】:

  • 但是将图像保存在 S3 上吗?尝试从您的 carrierwave.rb 中删除此行:config.fog_host = 's3.amazonaws.com/iemarkt'
  • 不是我在 Heroku 上收到错误消息,说出现了问题。
  • 但是它给出了什么错误?对于日志,您可以看到确切的错误
  • 2012-08-20T21:18:56+00:00 app[web.1]:在 2012-08-20 21:18:56 开始为 24.90.124.181 获取“/assets/” +00002012-08-20T21:18:56+00:00 app[web.1]:2012-08-20T21:18:56+00:00 app[web.1]: ActionController::RoutingError (没有路由匹配 [ GET] "/assets"):
  • 当我查看损坏的图片链接时,src 是“/assets/”,我知道这是错误,但我不知道如何更改它。

标签: ruby-on-rails heroku nginx carrierwave


【解决方案1】:

我刚刚尝试部署您的应用,它运行良好,看到我的用户上传了一张图片

http://young-reaches-9187.herokuapp.com/deals/1

我唯一改变的是载波设置,区域名称错误: 您正在尝试使用该区域

'eu-east-1' 这不存在,所以我将其更改为: 'us-east-1'

完整的地区列表在这里:http://docs.amazonwebservices.com/general/latest/gr/rande.html

顺便说一句,您不应该在您的应用程序中写入您的 AWS 凭证。例如,我刚刚上传到您的存储桶,但我本可以销毁您的文件。 您应该使用环境变量。

你还应该在你的 .gitignore 中添加你的 database.yml。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2017-01-18
    • 2021-02-01
    • 2022-07-25
    • 1970-01-01
    相关资源
    最近更新 更多