Carrierwave雾Amazon S3的图像不显示 [英] Carrierwave fog Amazon S3 images not displaying
问题描述
我已经安装了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&Signature=8PLq8WCkfrkthmfVGfXX9K6s5fc%3D&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
totrue
- 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屋!