【问题标题】:Heroku not showing uploaded photos using Paperclip and AWSHeroku 不显示使用 Paperclip 和 AWS 上传的照片
【发布时间】:2016-10-23 22:25:56
【问题描述】:

我正在使用回形针将照片加载到 heroku 网站。我没有收到任何错误,并且我的对象已创建,但我没有照片。 我正在使用的 gem 版本是:

gem 'paperclip', '~> 4.3', '>= 4.3.6'
gem 'aws-sdk', '< 2.0'

我的配置设置都是正确的,而且我在俄勒冈地区,所以我将 AWS_REGION 设置为“us-west-2”。 我相信我的 production.rb 设置正确,

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'),
  }
}

而我应该有照片的公司模特是

class Company < ActiveRecord::Base
  has_attached_file :logo_image, styles: { medium: "300x300>", 
                                           thumb: "100x100>" }, 
                    :default_url => ActionController::Base.helpers.asset_path("noimage1.jpg")

在我的 Heroku 日志中:

[paperclip] saving /companies/logo_images/000/000/743/original/baking.jpg
[AWS S3 200 0.218362 0 retries] put_object(:acl=>:public_read,
    :bucket_name=>"mybucketname", :content_length=>64071,
    :content_type=>"image/jpeg",
    :data=>Paperclip::UploadedFileAdapter: baking.jpg,
    :key=>"companies/logo_images/000/000/743/original/baking.jpg")

我以这种方式将图像渲染到我的展示页面:

<%= image_tag(@company.logo_image.url(:medium)) %>

在我看来,我的照片正在保存到存储桶中,但由于某种原因它没有呈现到页面。

【问题讨论】:

  • 能否上传用于在视图中显示图像的代码?
  • 我更新了相关代码。
  • 当我第一次设置 AWS 时,真正帮助我的是,如果您进入 AWS 控制台并查看图像,您可以在右侧的 ti 属性中获取该图像的 url。如果您还没有,请检查页面并确保它首先与视图中的内容匹配,然后从那里开始调试。还是您已经尝试过这样做?
  • 我刚刚发现了问题,但感谢您的提示。我会在以后使用它。

标签: ruby-on-rails heroku amazon-s3


【解决方案1】:

我通过将 url 和路径属性添加到我的 production.rb 中的 config.paperclip_defaults 解决了这个问题

url: ":s3_domain_url",
path: ":class/:id.:style.:extension",

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多