因为无法将文件上传到Heroku应用程序。
我正在使用Amazon S3存储服务器来存储图像。
问题只在于图片网址是亚马逊S3服务器。
我希望它是mydomain.com/myimage.png
而不是s3.amazon.com/bucket/myimage.png
访问示例时,如何在亚马逊s3服务器上显示图像:mydomain.com/myimage.png
?
答案 0 :(得分: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
答案 1 :(得分:3)
您可以创建一个机架中间件,在网址中查找模式(/ images / *或* .png),当匹配时,它将充当代理,从S3请求图像并提供内容收到它。
确保正确设置缓存标头,以便Heroku的反向代理将缓存它并快速提供。