1

我在Rails應用程序中設置了回形針,並且在本地和heroku上運行良好,但上傳到帖子中的圖像只在heroku中保存了很短的時間。我建立了一個AWS賬戶並創建了一個存儲桶,然後通過文檔將我的rails應用程序鏈接到AWS以顯示用回形針上傳的圖像。我在下面附上代碼片段。這些圖片似乎已經上傳到AWS,但是當我創建一篇文章時,它表示我的文章已經成功創建,但圖片不顯示,只是顯示爲斷開的鏈接。當我點擊圖片屬性時,它就是AWS S3網址,並且在查看heroku日誌時,沒有已知問題。我不知道爲什麼圖像不顯示。Rails回形針Heroku AWS DIsplay圖片問題

配置/環境/ production.rb文件:

# sets paperclip to upload images to Amazon S3 
 
    # Variables directed to heroku via the command line for pw etc 
 
    config.paperclip_defaults = { 
 
    storage: :s3, 
 
    s3_credentials: { 
 
    bucket: ENV.fetch('S3_BUCKET_NAME'), 
 
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
 
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
 
    s3_region: ENV.fetch('AWS_REGION'), 
 
    } 
 
}

post.rb模型文件:

class Post < ApplicationRecord 
 
    extend FriendlyId 
 
    friendly_id :title, use: [:slugged, :finders] 
 
    has_attached_file :image, styles: { medium: "600x", thumb: "100x" } 
 
    validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/ 
 
end

show.html.erb文件:

<div class="image"> 
 
      <%= image_tag @post.image.url(:medium) %> 
 
     </div>

我還建立了Heroku的正確使用下列內容:

$ heroku config:set S3_BUCKET_NAME=your_bucket_name 
$ heroku config:set AWS_ACCESS_KEY_ID=your_access_key_id 
$ heroku config:set AWS_SECRET_ACCESS_KEY=your_secret_access_key 
$ heroku config:set AWS_REGION=your_aws_region 

任何幫助,將不勝感激。

非常感謝

回答

2

按賈德的答案Paperclip, S3, Heroku: Missing Image,那是因爲我需要說明的回形針默認設置s3_host_name:

# sets paperclip to upload images to Amazon S3 
 
    # Variables directed to heroku via the command line for pw etc 
 
    config.paperclip_defaults = { 
 
    storage: :s3, 
 
    s3_host_name: 's3-eu-west-1.amazonaws.com', 
 
    s3_credentials: { 
 
    bucket: ENV.fetch('S3_BUCKET_NAME'), 
 
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
 
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
 
    s3_region: ENV.fetch('AWS_REGION'), 
 
    }