我有一个rails 3应用程序,我使用'face'宝石来引用Face.com API。 api方法采用以下形式的参数:
:file => File.new(path_to_file, 'rb')
有效。
我正在尝试更改应用程序的流程,以便可以通过表单上传文件,使用RMagick进行一些操作,然后进行API调用,所有这些都不会将文件保存到磁盘。
我可以用
生成RMagick'Image'image = Magick::Image.from_blob(upload_image_field.read)
然后我可以使用RMagick操作文件,甚至可以使用以下结果将结果保存到数据库中:
self.data = image.to_blob #normally 'upload_image_field.read' if not using RMagick
我的问题是我无法将图像文件(或blob)更改为API将识别的内容(不将其保存到磁盘,然后在磁盘上引用该文件)。
例如,在API方法中使用此方法失败:
:file => image.to_blob
如何将blob转换为与
相同的格式File.new(path_to_file, 'rb')
由于
答案 0 :(得分:1)
参考文献from: [https://github.com/rociiu/face/tree/master/lib/face]:
def faces_detect(opts={})
opts.assert_valid_keys(:urls, :file, :detector, :attributes, :callback, :callback_url)
make_request(:faces_detect, opts)
end
def make_request(api_method, opts={})
....
response = JSON.parse( RestClient.post(API_METHODS[ api_method ], opts.merge(api_crendential)).body )
....
end
那么,为什么保存到文件会有问题呢?