如何从express传输大型xml响应

时间:2018-05-16 23:54:59

标签: node.js express stream chunking xml-builder

我正在尝试将一个大的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()

回调按预期工作,它显示数据块通过。

我试过了:

  • 将响应的内容类型更改为,例如, '应用程序/八位字节流'
  • 调用后使用res.flush() res.write(),或定期执行
  • 尝试其他标题

在所有情况下,如果我可以获得发送响应,则客户端永远不会收到它的开始,直到调用res.end()。我需要做什么才能让express在流经回调时开始提供内容?

我已经探讨了questions and posts like this,这表明我的方法是正确的,但我做错了,或者流媒体可能因为其他模块或中间件而无法正常使用。

0 个答案:

没有答案