【发布时间】:2011-02-27 21:36:51
【问题描述】:
所以这应该很容易,但我无法让它工作。
我有一个控制器方法,可以根据查询查找图像,然后缓存输出。图片可以是远程的(flickr、google 图片等),也可以是本地的。无论来源如何,我只需要获取图像文件内容,并将其传递给用户。本质上是一个代理。通过远程图像似乎工作正常,但通过本地图像给我一个:
invalid byte sequence in UTF-8
这就是我得到的。我希望有人可以用我的代码解决问题或指导我朝着更好的方向发展。
def image_proxy
query = params[:query]
image_url = get_image_url(query) # returns an absolute local file path or a URL
response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}"
response.headers['Content-Type'] = 'image/jpeg'
response.headers['Content-Disposition'] = 'inline'
render :text => open(image_url).read
end
远程文件工作正常,本地文件不行。
奖励任何可以帮助解决此其他问题的人:
- 我需要设置正确的内容类型。远程图像 url 不告诉我图像类型,我只是得到一个 url,有时 url 不包含扩展名。所以我选择了 jpeg,因为无论发送给我的图像类型如何,它似乎都能正常工作。
谢谢!
【问题讨论】:
标签: ruby-on-rails image proxy