我需要使用RMagick在我的控制器中即时创建图像文件并将它们发送到浏览器。看起来很简单,但我找不到办法。我只是尝试了render
,但由于数据是二进制的,它失败了。我也试过使用send_data
,但Padrino说它不知道这种方法。
那么,我错过了什么?我该如何解决这个问题?
答案 0 :(得分:5)
研究如何通过Padrino控制器发送文件我发现了这个问题,这有助于我实现目标。
send_data方法是一个Sinatra请求方法,已在版本1.0中删除:https://github.com/sinatra/sinatra/blob/1.0/CHANGES#L108
我正在使用Padrino版本0.10.7,我的行动已经变成了这个:
get :screenshot, :provides => :jpg do
...
File.open("path/to/file", "r").readlines
end
答案 1 :(得分:3)
根据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