Javascript Node.js将二进制文件转换为utf8
我有一个以二进制格式(bytea)存储在postgresql数据库中的jrmxl(Jasper report)文件。我正在尝试读取该文件并将其转换为普通jrmxl(XML)文件,然后将其保存在磁盘上 这是我到目前为止试过的Javascript Node.js将二进制文件转换为utf8,javascript,node.js,postgresql,jasper-reports,binary-data,Javascript,Node.js,Postgresql,Jasper Reports,Binary Data,我有一个以二进制格式(bytea)存储在postgresql数据库中的jrmxl(Jasper report)文件。我正在尝试读取该文件并将其转换为普通jrmxl(XML)文件,然后将其保存在磁盘上 这是我到目前为止试过的 var fs = require('fs'); exports.saveFile = function (pg) { //pg is the postgres connection to query the db pg.query('Select data from
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中导入?您可以先尝试使用缓冲区。我使用这种技术将DB blob转换为base64字符串
var fileBuffer=新缓冲区(result.rows[0]。数据为“二进制”);
var file=fileBuffer.toString('utf8');
第三个参数应该是一个对象:fs.writeFile('path',file,{encoding:'utf8'},function…
谢谢你的评论,我刚刚试过,但同样的问题仍然存在。我对Dropbox JS SDKfilesdload
有问题,这有助于将字符串从二进制
转换为utf-8
。