Nodejs使用流保存二进制文件

时间:2015-02-08 17:15:15

标签: node.js excel stream binary filestream

全心全意,

我尝试使用流将数据对象保存到Excel文件中。但是,保存后文件无法打开。

同时,我使用fs.writeFile保存相同的数据对象,并且可以正确打开和查看Excel文件。

请参阅下面的代码。当我比较这两个文件时,用Stream保存的文件大约大2kb,如果我删除"二进制文件"参数,fs.writeFile也不会工作,所以我认为"二进制"正在做着魔术。

你可以让我知道我在这里失踪的是什么吗?提前谢谢!

var fs = require('fs'),
    path = 'temp',
    Stream = require('stream'),
    rs = new Stream.Readable({ objectMode: true }),
    outFileStream,
    result = generateExcelData();

    rs.push(result);
    rs.push(null);
    outFileStream = fs.createWriteStream(path + 'stream.xlsx');//stream.xlsx cannot be opened 
    rs.pipe(outFileStream);

    fs.writeFile(path + 'stream2.xlsx', result, 'binary');//stream2.xlsx can be opened without any issue

1 个答案:

答案 0 :(得分:0)

我意识到我错过了这个:

buffer = new Buffer(result,'binary');