【问题标题】:Rails Paperclip Heroku AWS DIsplay Image issueRails Paperclip Heroku AWS 显示图像问题
【发布时间】:2016-09-22 13:49:49
【问题描述】:

我在 rails 应用程序中设置了回形针,这在本地和 heroku 上运行良好,但是在帖子中上传的图像仅在很短的时间内保存在 heroku 中。我设置了一个 AWS 帐户并创建了一个存储桶,然后按照文档将我的 rails 应用程序链接到 AWS 以显示使用回形针上传的图像。我在下面附上了代码 sn-ps。图片似乎可以很好地上传到 AWS,但是当我创建帖子时,它说我的帖子已成功创建,但是图片不显示,它只是显示为断开的链接。当我单击图像属性时,它是 AWS S3 url,在查看 heroku 日志时,没有已知问题。我不知道为什么图像不显示。

config/environments/production.rb 文件:

# sets paperclip to upload images to Amazon S3
  # Variables directed to heroku via the command line for pw etc
  config.paperclip_defaults = {
  storage: :s3,
  s3_credentials: {
    bucket: ENV.fetch('S3_BUCKET_NAME'),
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
    s3_region: ENV.fetch('AWS_REGION'),
  }
}

post.rb 模型文件:

class Post < ApplicationRecord
  extend FriendlyId
  friendly_id :title, use: [:slugged, :finders]
  has_attached_file :image, styles: { medium: "600x", thumb: "100x" }
  validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end

show.html.erb 文件:

<div class="image">
          <%= image_tag @post.image.url(:medium) %>
        </div>

我还使用以下方法正确设置了 heroku:

$ heroku config:set S3_BUCKET_NAME=your_bucket_name
$ heroku config:set AWS_ACCESS_KEY_ID=your_access_key_id
$ heroku config:set AWS_SECRET_ACCESS_KEY=your_secret_access_key
$ heroku config:set AWS_REGION=your_aws_region

任何帮助将不胜感激。

非常感谢

【问题讨论】:

    标签: ruby-on-rails amazon-web-services heroku amazon-s3 paperclip


    【解决方案1】:

    根据贾德对Paperclip, S3, Heroku: Missing Image 的回答,这是因为我需要在回形针默认设置中声明 s3_host_name:

    # sets paperclip to upload images to Amazon S3
      # Variables directed to heroku via the command line for pw etc
      config.paperclip_defaults = {
      storage: :s3,
      s3_host_name: 's3-eu-west-1.amazonaws.com',
      s3_credentials: {
        bucket: ENV.fetch('S3_BUCKET_NAME'),
        access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
        secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
        s3_region: ENV.fetch('AWS_REGION'),
      }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      相关资源
      最近更新 更多