1

我需要使用 RMagick 在我的控制器中即时创建图像文件并将它们发送到浏览器。看起来很简单,但我找不到方法。我只是简单地尝试过render它们,但由于数据是二进制而失败。我也尝试过使用send_data,但帕德里诺说它不知道这种方法。

那么,我错过了什么?我怎么解决这个问题?

4

2 回答 2

5

研究如何通过 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
于 2012-12-03T14:20:38.227 回答
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
于 2012-08-18T08:35:55.627 回答