2015-05-13 27 views
0

我有从客户端(设备)逐包发送的二进制映像文件。我该如何妥善处理这个问题并将其保存到数据库中,以防止将来在转换后在图像上有条纹线。如何正确处理来自套接字的传入二进制数据

var net = require('net'); 
var server = net.createServer(function(socket){ 
    socket.on('end', function() { 
     // somstuffhere(); 
    }); 
    socket.on('data',function(data){ 
     var revdata += data.toString('binary'); // receive first the buffer data. 
    var checkdata = revdata.substr(-5); 
    if(checkdata.substr(0,1) == '*'){ 
      var hexdata = new Buffer(revdata, 'ascii').toString('hex'); 
    // After converting to hex.Save database here.. 
     }else{ 
      revdata += data.toString('binary'); 
     } 
}); 
server.listen(3020,'127.0.0.1', function() { 
    console.log("server is up!"); 
}); 

列字段的数据类型是VARCHAR(3072).这是否有意义?

+0

你不能“assum并[e]接收二值图像的完整的1个数据”。这是你的第一个问题。 TCP是一种字节流,而不是消息传递协议。至于3072是否足够大,您的图片只有您可能知道。 – EJP

+0

1.没有人会跟随链接。 2.构成问题一部分的材料必须包含在问题中。 3.我已经说过,只有你知道你的图像有多大。但是我会为此使用Blob,而不是带编码的'VARCHAR'。 – EJP

+0

如果你使用Blob,并且不要搞乱任何编码,数据将被保存为二进制。 – EJP

回答

1

我会用这个Blob,不利用编码VARCHAR。这样

  • 你不必提前决定有多大,以及
  • 你没有做任何编码的。
相关问题