簡體   English   中英

Carrierwave霧無法顯示Amazon S3圖像

[英]Carrierwave fog Amazon S3 images not displaying

我已經安裝了載波和霧,已成功上傳圖像並第一次查看它們,但現在它不再顯示圖像了。

這是我的配置文件 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">

當我打開圖像網址時,這是來自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>

更新

新配置文件(添加霧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

奇跡般有效!

您已將config.fog_public設置為false並使用Amazon S3進行存儲。 通過S3的私人文件的URL是臨時的(它們已簽名且有效期)。 具體而言,您的問題中發布的URL具有Expires=1354859553參數。

1354859553Fri, 07 Dec 2012 05:52:33 GMT ,這是從當前時間過去,所以鏈接已經有效過期,這就是為什么你得到Access Denied錯誤。

您可以通過設置進一步調整到期時間(默認值為600秒)

config.fog_authenticated_url_expiration = ... # some integer here

如果你想要非過期的鏈接

  • config.fog_public設置為true
  • 讓你的應用程序充當中間人,通過send_file提供文件。 這里至少有一個關於SO的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM