我已经安装了载波和雾,已成功上传图像并第一次查看它们,但现在它不再显示图像了。
这是我的配置文件 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
这就是应该显示的图片的网址:
<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">
<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_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
就像一个魅力!
答案 0 :(得分:25)
您已将config.fog_public
设置为false
并正在使用Amazon S3进行存储。通过S3的私人文件的URL是临时的(它们已经签名并且有效期)。具体而言,您问题中发布的网址包含Expires=1354859553
个参数。
1354859553
是Fri, 07 Dec 2012 05:52:33 GMT
,这是当前时间的过去,因此该链接已有效过期,这就是您收到Access Denied
错误的原因。< / p>
您可以通过设置
进一步调整到期时间(默认值为600
秒)
config.fog_authenticated_url_expiration = ... # some integer here
如果您想要非过期链接
config.fog_public
设为true
send_file
提供文件。 Here 至少有一个关于此问题的问题