2012-03-30 68 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 
相关问题