用葡萄品尝图像

时间:2015-06-10 19:15:17

标签: ruby-on-rails ruby grape-api

我有一个应该提供图像的GET服务。继葡萄自述之后: 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)

如何发送图像以避免丢失扩展名和文件名?

2 个答案:

答案 0 :(得分:0)

你这样做,在它之前添加content_type :png, "image/png"

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

答案 1 :(得分:0)

对于将来可能遇到此问题的任何人,正确的解决方案是为header属性添加一行,如下所示:

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

"附件"可以切换到"内联"如果你想在浏览器上显示文件。