Javascript Node.js将二进制文件转换为utf8

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

我有一个以二进制格式(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 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 SDK
filesdload
有问题,这有助于将字符串从
二进制
转换为
utf-8