2012-03-30 50 views
4

因爲無法將文件上傳到Heroku應用程序。Rails - 是否可以給外部圖像一個本地URL?

我正在使用Amazon S3存儲服務器獲取圖像。

問題在於圖片網址是針對Amazon S3服務器的。

我想它是代替mydomain.com/myimage.pngs3.amazon.com/bucket/myimage.png

怎麼可能訪問例如,當表現出的Amazon S3服務器上的圖像:mydomain.com/myimage.png

回答

3

您可以創建一個機架中間件,它將在url(/ images/*或* .png)中查找一個模式,並且在匹配時它將作爲代理,請求S3中的圖像併爲它收到的內容。

請確保您正確設置緩存標頭,以便Heroku的反向代理將緩存並快速提供。

7

我的解決辦法,我只能用png圖片:

在路線:

match "/images/vind/:style/:id/:basename.png" => "public#image_proxy" 

在公共控制器:

def image_proxy 
    image_url = "http://s3-eu-west-1.amazonaws.com/konkurrencerher#{request.path}" 
    response.headers['Cache-Control'] = "public, max-age=#{84.hours.to_i}" 
    response.headers['Content-Type'] = 'image/png' 
    response.headers['Content-Disposition'] = 'inline' 
    render :text => open(image_url, "rb").read, 
end 
相關問題