我正在尝试将大型 xml 文件从 express 流式传输到客户端,但在服务器上完成文件处理并调用 res.end() 之前,我还没有找到如何发送。
xml 文件是使用 xmlbuilder-js 构建的。它有一个接收文档块的回调,我试图使用 response.write(chunk) 在其中发送。
res.writeHead(200, {
'Content-Type': 'text/xml',
'Transfer-Encoding': 'chunked'
})
xmlToReturn = xmlBuilder.begin({
writer: {
pretty: true,
}
}, function(chunk) {
res.write(chunk)
}).dec('1.0', 'UTF-8', true)
...
res.end()
回调按预期工作,它显示通过的数据块。
我努力了:
- 将响应中的内容类型更改为,例如,“application/octet-stream”
- 在调用 res.write() 后使用 res.flush(),或定期执行此操作
- 尝试其他标题
在所有情况下,如果我能得到要发送的响应,客户端永远不会收到它的开始,直到 res.end() 被调用。我需要做什么才能让 express 在内容流经回调时开始交付内容?
我已经探索过这样的问题和帖子,这表明我的方法是正确的,但我做错了,或者由于其他模块或中间件,流式传输无法快速工作。