2

我需要从套接字获取的整个字节数组数据,然后我需要将其插入到数据库中的 BLOB 中。不要问我为什么不格式化字节数组中的数据,因为我需要使用该结构。

我将字节数组数据存储到 js 数组中。我试图将它存储在缓冲区对象中,但是当我尝试将字节数组数据写入缓冲区时出现错误,因为它可以转换它。

我的问题是如何在 js 中使用字节数组的最简单方法。我有以下代码:

var buff =[];
sock.on('data', function(data) {
    buff.push(data);
})

sock.on('end', function() {
    console.log(data) // [<Byte Array>,<Byte Array>, ...]
});

基本上我想将我的数据插入为 [] 而不是 [,, ...]。我的问题的最佳解决方案是什么?

4

1 回答 1

5

根据您的数据库接口,您可能能够将 JS 数组的每个元素作为单独的块进行流式传输。

[更新] 看起来 node.js 现在提供了Buffer.concat(...)一种将一堆缓冲区连接成一个缓冲区的方法(基本上替换了我在下面提到的“buffertools”库)。

var buffers = [];
sock.on('data', function(data) {
  buffers.push(data);
}).on('end', function() {
  var bytes = Buffer.concat(buffers); // One big byte array here.
  // ...
});

[原创] 或者,您可以使用buffertools模块将所有块连接到单个缓冲区中。例如:

var buffertools = require('buffertools');
var buff = new Buffer();
sock.on('data', function(data) {
  buff = buff.concat(data);
}).on('end', function() {
  console.log(buff); // <Byte Array>
});
于 2013-02-06T17:50:03.837 回答