Firebird blob到Base64 - Node.js

时间:2017-10-04 21:58:39

标签: javascript node.js firebird

我正在使用 java / jsf Node / Angular 迁移一个网站,但我遇到了使用node-firebird将firebb从firebird数据库转换为base64的问题。 / p>

connection.query(query,function(err,rows){

  if(err) {
    res.json({"Error" : true, "Message" : "Error executing query"});
  } else {

    var buffer;
    var bufferBase64;

    for(var i = 0; i < rows.length; i++){
      rows[i].image(function(err, name, eventEmitter) {

        eventEmitter.on('data', function(chunk) {
           buffer = new Buffer(chunk, 'binary').toString('base64');
           bufferBase64 += buffer;

        });
        eventEmitter.on('end', function() {
        console.log(bufferBase64); // print base64
        });
      });

    }

    res.json(rows);
  }
  connection.detach();
});

来自node-firebird的此代码生成无效的base64,但这项工作使用Java。

byte[] encoded = Base64.getEncoder().encode(rs.getBytes("image"));
System.out.println(new String(encoded));

This is a buffers of a image : [function] that returns from the database

1 个答案:

答案 0 :(得分:1)

感谢Mark rotteveel解决了我的问题。

如果其他人遇到同样的问题,请在解决方案之下。

         rows[i].image(function(err, name, eventEmitter) {
            let buffers = [];
            eventEmitter.on('data', function(chunk) {
               buffers.push(chunk);
            });
            eventEmitter.once('end', function() {
            let buffer = Buffer.concat(buffers);
            console.log(buffer.toString('base64')); // print base64
            });
          });