Так что это должно быть довольно просто, но я не могу заставить его работать.
У меня есть метод контроллера, который находит изображение на основе запроса, а затем вывод кэшируется.Изображение может быть удаленным (flickr, google images и т. Д.) Или локальным.Независимо от источника, мне просто нужно взять содержимое файла изображения и передать его пользователю.По сути, прокси.Проход через удаленные изображения, кажется, работает нормально, но прохождение через локальные образы дает мне:
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, потому что он работает независимо от типа отправленного мне изображения.
Спасибо!