Node.js:处理文件上传,从未调用'data'事件

时间:2012-12-03 19:45:44

标签: file node.js file-upload 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')
})

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

如何处理?

1 个答案:

答案 0 :(得分:0)

我找到了导致问题的原因,结果我的数据接收代码在应用程序逻辑内部的异步回调中执行。

通过在请求处理程序的开头使用request.pause()暂停请求,并在它到达app逻辑层之后,在'data'和'end'事件被绑定之后恢复它来解决问题