我有一个应该提供图像的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)
如何发送图像以避免丢失扩展名和文件名?
答案 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"
"附件"可以切换到"内联"如果你想在浏览器上显示文件。