【问题标题】:Node.js convert binary file to utf8Node.js 将二进制文件转换为 utf8
【发布时间】:2015-04-27 17:28:17
【问题描述】:

我有一个 jrmxl(Jasper 报告)文件以二进制格式 (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 中导入?

【问题讨论】:

  • 第三个参数应该是一个对象:fs.writeFile('path', file, {encoding: 'utf8'}, function...)
  • 感谢您的评论,我刚试过,但同样的问题仍然存在。

标签: javascript node.js postgresql jasper-reports binary-data


【解决方案1】:

您可以先尝试通过缓冲区。我已经使用这种技术将 DB BLOB 转换为 base64 字符串。

var fileBuffer = new Buffer( result.rows[0].data, 'binary' );
var file = fileBuffer.toString('utf8');

【讨论】:

  • 我在使用 Dropbox JS SDK filesDownload 时遇到了问题,这有助于将字符串从 binary 转换为 utf-8
猜你喜欢
  • 2013-03-07
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
相关资源
最近更新 更多