微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby轨道 – 载波波亚马逊S3图像不显示

我已经安装了载波和雾,已成功上传图像并首次查看,但现在不再显示图像.

这是我的配置文件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',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

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

<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">

当我打开图像url这是从亚马逊的输出
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>

更新

配置文件(添加了雾url到期)app / config / initializers / carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',# 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

奇迹般有效!

解决方法

您将config.fog_public设置为false,并使用Amazon S3进行存储.通过S3的私有文件的URL是临时的(它们已经签名并且有期满).具体来说,您问题中发布的URL的Expires = 1354859553参数.

1354859553是星期五,2012年12月07日05:52:33 GMT,这是从当前的时间过去,所以链接已经有效过期,这就是为什么你得到访问被拒绝的错误.

您可以通过设置进一步调整到期时间(认值为600秒)

config.fog_authenticated_url_expiration = ... # some integer here

如果你想要非到期链接

>将config.fog_public设置为true
让你的应用程序作为一个中间人,通过send_file为文件提供服务. Here至少有一个涉及这个问题的问题

原文地址:https://www.jb51.cc/ruby/273282.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐