2015-05-13 28 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。這樣

  • 你不必提前決定有多大,以及
  • 你沒有做任何編碼的。
相關問題