存储字节数组

高塔姆

以下是sinatra路线:

post '/accounts/:id/video' do |acc_id|
  acc_id = params[:id].to_s
  user = db_find('thrill.users',{_id: acc_id})
  if user
   db_update('thrill.users', { _id: acc_id},
      { '$set' => 
        { video: request.body.to_s }})
    res(200, :sys_message => 'Video stored.')
  else
    res(201, :sys_message => "User not found")
  end
end

它以字节数组的形式从客户端获得带有视频文件的响应。如果我直接将其存储在数据库中,则会以以下格式存储:

PhusionPassenger::Utils::TeeInput:0x007f48f8485b50

它必须以一种以后可以检索并发送回客户端的格式存储在数据库中。如何读取字节数组?用于存储的优选格式将是URL的形式,客户端可以访问并流式传输视频。如何才能做到这一点?

马特

根据Rack规范,关于请求正文(这request.body是:

输入流是一个类似IO的对象,其中包含原始HTTP POST数据。如果适用,其外部编码必须为“ ASCII-8BIT”,并且必须以二进制模式打开,以实现Ruby 1.9兼容性。输入流必须响应获取,读取和倒带。

PhusionPassenger::Utils::TeeInput课程符合这些要求。调用to_s此调用的实例将仅给出该对象的Ruby字符串表示形式。要获取您需要调用内容read,例如

{ video: request.body.read }

这会将整个正文读取为字符串,然后您可以将其传递给Mongo。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章