Подача изображения с помощью Grape

У меня есть служба GET, которая должна обслуживать изображение. После прочтения Grape: https://github.com/intridea/grape#user-content-sending-raw-or-no-data

get :image do
  content_type 'application/octet-stream'
  File.binread "image.png"
end

Но при загрузке изображения отсутствует его расширение (.png) и имя файла.

Я тоже пробовал:

get :image do
  content_type 'image/png'
  File.binread "image.png"
end

Но возвращает ошибку:

Encoding::UndefinedConversionError ("\x89" from ASCII-8BIT to UTF-8)

Как отправить изображение, чтобы не потерять расширение и имя файла?


person Fran b    schedule 10.06.2015    source источник
comment
Привет, ты решил проблему? я тоже встречаюсь.   -  person debbie    schedule 28.08.2015


Ответы (2)


Вы можете сделать так, добавьте content_type :png, "image/png" перед ним.

content_type :png, "image/png"
get :image do
  content_type 'image/png'
  File.binread "image.png"
end
person debbie    schedule 28.08.2015

Для тех, кто может столкнуться с этим в будущем, правильное решение — добавить строку для свойства заголовка, например:

header['Content-Disposition'] = "attachment; filename=filename.png"

«attachment» можно переключить на «inline», если вы хотите, чтобы файл отображался в браузере.

person IBmeister    schedule 08.06.2016