Nodejs多部分file upload,生成大于原始文件

我想用Express 4编写一个Nodejs服务器的file upload器。我不想使用任何中间件来达到这个目的,因为这更像是一个理论练习,以更好地理解Nodejs如何工作和分段上传。

以下是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。 我相信这与将编码从身体来回切换写出来有关。 我也明白,节点并没有真正的二进制编码,这可能是一个问题?

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

其他信息:
 +快递4
 +除了cookieparser,我现在还没有使用任何中间件
 + Ubuntu 12.04
 +节点v0.10.31

仔细检查你在这里比较苹果和苹果。 操作系统上的不同接口可以以不同的方式计算大小,对于完全相同的文件可能显示几百KB的差异。 例如,我现在在电脑上有一个文件,在Finder中显示为2.3MB,而在使用ls -h时在terminal中显示为2.2MB。