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