图片已上传到aws,但无法在视图

时间:2016-08-04 23:30:15

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

我刚刚将AWS与我的rails / heroku应用程序集成,我正在使用回形针。我可以上传文件(照片)并在AWS中查看它们,但它们没有显示在视图中。我没有收到任何错误,也没有在其他帖子中找到合适的解决方案。

我似乎能够在浏览器中查看图片,并且权限设置为公开:enter image description here

我怀疑我的地区可能有错,在我的aws仪表板的网址中,该区域说region=us-west-2但谷歌搜索和阅读其他论坛和SO上的帖子让我相信如果我在美国我的区域应该设置为us-east-1 - 目前我将它设置为后者。不确定这是不是问题。

以下是AWS上图片的链接:https://s3.amazonaws.com/giving-tree-images/avatars/1/medium/02108_navajoland_1440x900.jpg

这是与我的模型中的aws / paperclip有关的代码:

:storage => :s3,
# :s3_host_name => "s3-us-east-1.amazonaws.com",
:s3_credentials => {
  :bucket => ENV['S3_BUCKET_NAME'],
  :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
  :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
},

:path => ":rails_root/public/system/:attachment/:id/:style/:filename", 
:default_url => "default_img.png"

我正在这样的视图中显示:

<%= image_tag @user.avatar.url(:medium) %>

如果有人能指出我正确的方向,我会很高兴...如需更多信息,请告诉我们!

2 个答案:

答案 0 :(得分:1)

我也面临同样的问题,所以这就是我解决它的方法:

  1. 创建一个新的初始化文件,即config / initializers / paperclip.rb
  2. 在此文件中添加以下内容 Paperclip::Attachment.default_options[:url] = ':s3_domain_url' Paperclip::Attachment.default_options[:s3_host_name] = 's3-us-west-2.amazonaws.com'
  3. 要获取有关您所在地区的详细信息,请访问aws

    Amazon Web Service - Check your host name

    注意:将s3-us-west-2.amazonaws.com替换为您自己的主机名

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

答案 1 :(得分:-1)

您是否启用了对所有人的读取权限? 当访问链接时,它给了我访问被拒绝的错误。