Nodejs多部分文件上载,生成的文件大于原始文件

时间:2014-10-09 14:32:22

标签: node.js express encoding upload multipart

我想使用Express 4编写一个Nodejs Server的文件上传器。我不想使用任何中间件来实现这一点,因为这更像是一个学术练习,可以更好地理解Nodejs的工作原理和分段上传。 / p>

以下是Express 4中路由的主要代码,用于收集客户端数据并将其写出。

var clientData = [];
// When Data Arrives
req.on('data', function(data){
    clientData.push(data);
});
// Done
req.on('end', function(){
    var output  = Buffer.concat(clientData);
    fs.writeFile('Thisisthesong.mp3', output, 'binary', function(err){
        if (err) throw err;
        debug('Wrote out song');
    });
});

我的问题是,当文件最终写出时,大于原始文件。例如,如果我要使用最初为10.5 MB的代码上传MP3,则结果为11 MB。我认为它与从身体来回切换编码到编写它有关。我也明白节点并没有真正的二进制编码,这可能是一个问题吗?

我也认为这可能是因为我没有剥离数据的边界或内容处理(一旦这种方法运行良好,这将是下一步),但边界和处置只有大约300字节不是500KB。有没有人有解释或者可以指出我做错了什么,我会非常感激。

Other Info:
+ Express 4
+ I'm not using any middleware at the moment besides cookieparser
+ Ubuntu 12.04
+ Node v0.10.31

1 个答案:

答案 0 :(得分:1)

仔细检查你在这里比较苹果和苹果。操作系统上的不同接口可以以不同的方式计算大小,这可能显示完全相同的文件的数百千字节的差异。例如,我的计算机上有一个文件,在Finder中显示为2.3MB,但在使用ls -h时在终端显示2.2MB。