Carrierwave雾Amazon S3的图像不显示 [英] Carrierwave fog Amazon S3 images not displaying

查看:229
本文介绍了Carrierwave雾Amazon S3的图像不显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经安装了carrierwave茫茫,已成功上传图片并观看他们的第一次,但现在它已经不显示图像。

这是我的配置文件应用/配置/初始化/ carrierwave.rb

I have installed carrierwave and fog, have successfully uploaded the images and viewed them the first time, but now it does not show the images anymore.

Here is my config file app/config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                                       # required
    :aws_access_key_id      => 'AKIAJKOHTE4WTXCCXAMA',                      # required
    :aws_secret_access_key  => 'some secret key here',                      # required
    :region                 => 'eu-east-1',                                 # optional, defaults to 'us-east-1'
    :host                   => 'https://s3.amazonaws.com',                  # optional, defaults to nil
    :endpoint               => 'https://s3.amazonaws.com:8080'              # optional, defaults to nil
  }
  config.fog_directory  = 'createmysite.co.za'                    # required
  config.fog_public     = false                                   # optional, defaults to true
  #config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end

这是URL看起来是应该显示图像的

<img alt="Normal_selection_003" src="https://createmysite.co.za.s3.amazonaws.com/uploads/portfolio/image/3/normal_Selection_003.png?AWSAccessKeyId=AKIAJKOHTE4WTXCCXAMA&amp;Signature=8PLq8WCkfrkthmfVGfXX9K6s5fc%3D&amp;Expires=1354859553">

当我打开图片的网址,这是从亚马逊输出 <一href="https://createmysite.co.za.s3.amazonaws.com/uploads/portfolio/image/3/normal_Selection_003.png?AWSAccessKeyId=AKIAJKOHTE4WTXCCXAMA&Signature=8PLq8WCkfrkthmfVGfXX9K6s5fc%3D&Expires=1354859553">https://createmysite.co.za.s3.amazonaws.com/uploads/portfolio/image/3/normal_Selection_003.png?AWSAccessKeyId=AKIAJKOHTE4WTXCCXAMA&Signature=8PLq8WCkfrkthmfVGfXX9K6s5fc%3D&Expires=1354859553

when I open the image url this is the output from amazon https://createmysite.co.za.s3.amazonaws.com/uploads/portfolio/image/3/normal_Selection_003.png?AWSAccessKeyId=AKIAJKOHTE4WTXCCXAMA&Signature=8PLq8WCkfrkthmfVGfXX9K6s5fc%3D&Expires=1354859553

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>3F179B7CE417BC12</RequestId>
<HostId>
zgh46a+G7UDdpIHEEIT0C/rmijShOKAzhPSbLpEeVgUre1iDc9f7TSOwaJdQpR65
</HostId>
</Error>

更新

新的配置文件(加雾网址到期)的应用程序/配置/初始化/ carrierwave.rb

Update

new config file (added fog url expiry) app/config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                                       # required
    :aws_access_key_id      => 'AKIAJKOHTE4WTXCCXAMA',                      # required
    :aws_secret_access_key  => 'chuck norris',  # required
  }
  config.fog_directory  = 'createmysite.co.za'                              # required
  config.fog_public     = false                                             # optional, defaults to true
  config.fog_authenticated_url_expiration = 600                             # (in seconds) => 10 minutes
end

就像一个魅力!

works like a charm!

推荐答案

您已经设置 config.fog_public 并使用Amazon S3存储。通过S3私人文件的URL是临时的(他们签名并有到期)。具体来说,张贴在你的问题的网址有一个过期= 1354859553 参数。

You've set config.fog_public to false and are using Amazon S3 for storage. URLs for private files through S3 are temporary (they're signed and have an expiry). Specifically, the URL posted in your question has an Expires=1354859553 parameter.

1354859553 周五,2012年12月7日五时52分33秒GMT ,这是过去从当前时间,所以链路有效期满,这就是为什么你得到的访问被拒绝错误。

1354859553 is Fri, 07 Dec 2012 05:52:33 GMT, which is in the past from the current time, so the link has effectively expired, which is why you're getting the Access Denied error.

您可以进一步的调整到期(默认为 600 秒),通过设置

You can adjust the expiry out further (the default is 600 seconds) by setting

config.fog_authenticated_url_expiration = ... # some integer here

如果您希望非过期的链接或者

If you want non-expiring links either

  • 设置 config.fog_public
  • 有你的应用程序充当中间人,服务​​于文件恢复到由send_file <一个href="http://stackoverflow.com/questions/8089933/showing-images-with-carrierwave-in-rails-3-1-in-a-private-store-folder">Here是SO涵盖本
  • 在至少一个问题
  • set config.fog_public to true
  • have your application act as a middle man, serving the files up through send_file. Here is at least one question on SO covering this

这篇关于Carrierwave雾Amazon S3的图像不显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆