2015-05-13 2 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

Вы не можете принять [e] получение 1 пакета данных двоичного изображения '. Это твоя первая проблема. TCP - это байтовый поток, а не протокол обмена сообщениями. Что касается того, достаточно ли 3072 для ваших изображений, только вы можете это знать. – EJP

+0

1. Никто не будет следить за ссылками. 2. Материал, который является частью вопроса, должен быть включен в вопрос. 3. Как я уже сказал, только вы знаете, насколько велики ваши изображения. Но я бы использовал «Blob» для этого, а не «VARCHAR» с кодировкой. – EJP

+0

Если вы используете 'Blob' и не вмешиваетесь в какую-либо кодировку, данные будут сохранены как двоичные. – EJP

ответ

1

Для этого я бы использовал Blob, а не VARCHAR с кодировкой. Таким образом

  • вы не должны заранее решить, как большой, и
  • вы не должны делать любую кодировку вообще.
Смежные вопросы