Визуализация изображения

Так что это должно быть довольно просто, но я не могу заставить его работать.

У меня есть метод контроллера, который находит изображение на основе запроса, затем вывод кэшируется. Изображение может быть удаленным (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

Удаленные файлы работают нормально, локальные - нет.

Бонус всем, кто может помочь решить эту другую проблему:

  1. Мне нужно установить правильный тип содержимого. URL-адреса удаленных изображений не сообщают мне тип изображения, я просто получаю URL-адрес, а иногда URL-адрес не содержит расширения. Поэтому я выбрал jpeg, потому что он работает независимо от присланного мне типа изображения.

Спасибо!

24
задан Bach 6 October 2015 в 11:44
поделиться