[英]Firebird blob to Base64 - Node.js
I'm migrating one website with java/jsf for Node/Angular but i have the problem for convert blob from firebird database to base64 using node-firebird.我正在使用用于Node/Angular 的java/jsf迁移一个网站,但是我遇到了使用 node-firebird 将 blob 从 firebird 数据库转换为 base64 的问题。
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();
});
This code from node-firebird generate a invalid base64, but this work using Java.来自 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这是图像的缓冲区:从数据库返回的[函数]
Thanks Mark rotteveel for solved my problem.感谢Mark rotteveel解决了我的问题。
if have someone else with the same problem, below the solution.如果有其他人遇到同样的问题,请在解决方案下方。
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
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.