我需要使用 RMagick 在我的控制器中即时创建图像文件并将它们发送到浏览器。看起来很简单,但我找不到方法。我只是简单地尝试过render
它们,但由于数据是二进制而失败。我也尝试过使用send_data
,但帕德里诺说它不知道这种方法。
那么,我错过了什么?我怎么解决这个问题?
研究如何通过 Padrino 控制器发送文件我发现了这个问题,它帮助我实现了我的目标。
send_data 方法是 Sinatra 请求方法,已在 1.0 版中删除:https ://github.com/sinatra/sinatra/blob/1.0/CHANGES#L108
我使用的是 0.10.7 版的 Padrino,我的行为变成了这样:
get :screenshot, :provides => :jpg do
...
File.open("path/to/file", "r").readlines
end
根据 sinatra api,你不再需要这个了。
get :image, with: id, provides: :png do
img = Image.find(params[:id])
img.binary_data_or_so
end
基本上是一样的:
get '/send_binarydata' do
content_type 'image/png'
\x01\x02\x03
end