我有一个jrmxl(碧玉reports)文件以二进制格式(bytea)存储在postgresql数据库中,我试图读取该文件并将其转换为普通的jrmxl(XML)文件,然后将其保存在磁盘上。
这是我目前所做的尝试
var fs = require('fs');
exports.saveFile = function (pg) {
//pg is the postgres connection to query the db
pg.query('Select data from data_file where id = 123', function (err, result) {
if (err) {
console.log(err);
return;
}
var data = result.rows[0].data;
//Buffer.isBuffer(data) === true
// I can get the data here. Now I try to convert it into text
var file = data.toString('utf8');
fs.writeFile('report.jrxml',file, function (er) {
if (er) {
console.log('an error occurred while saving the file');
return;
}
console.log('file saved');
}}
});
}
如果我运行上面的代码,文件被保存,但不知何故它是二进制的。我如何将它转换为一个纯xml文件的文本格式,我可以导入到例如ireport?
2条答案
按热度按时间jv4diomz1#
您可以尝试先通过一个缓冲区。我已经使用这种技术将DB BLOB转换为base64字符串。
iaqfqrcu2#
我使用“pako”npm包来解决该问题:
npm i pako && npm i -D @类型/包