Node.js:处理file upload,“数据”事件从不叫

描述问题的一个简单的例子…客户端(使用HTML5文件API和XMLHttpRequest2):

var xhr = new XMLHttpRequest () xhr.open ('POST', '/upload', true) xhr.send (file) /* sends as plain binary blob, no multipart/form-data */ 

服务器端:

 var size = 0 request.setEncoding ('binary') request.on ('data', function (chunk) { console.log ('Received ' + (size += chunk.length) / (1024.0 * 1024.0) + ' Mb') }) request.on ('end', function (chunk) { console.log ('Done') }) 

问题是“数据”事件要么永远不会被调用,要么开始捡起文件的错误部分(而不是从头开始)。 看起来实际的数据块在“数据”事件绑定发生之前开始到达。

如何处理这个?

我发现是什么导致了这个问题,原来我的数据接收代码是在应用程序逻辑内部的深度asynchronouscallback中执行的。

通过request.pause()在请求处理程序的开始处暂停请求,并在“data”和“end”事件绑定之后,在达到应用程序逻辑层后,稍后恢复。