描述问题的一个简单案例......客户端(使用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')
})
问题是“数据”事件要么永远不会被调用,要么开始拾取错误的文件部分(而不是从头开始)。在“数据”事件绑定发生之前,似乎实际数据块开始到达。
如何处理?
答案 0 :(得分:0)
我找到了导致问题的原因,结果我的数据接收代码在应用程序逻辑内部的异步回调中执行。
通过在请求处理程序的开头使用request.pause()暂停请求,并在它到达app逻辑层之后,在'data'和'end'事件被绑定之后恢复它来解决问题