我编写了一个本质上是代理的快速 Web 应用程序路由 - 它将输入流(一个 zip 文件)的内容通过管道传输到服务器响应的输出流中。
我希望浏览器提示用户下载或最适合 zip 文件的任何内容。但是,当我在浏览器中加载此路由时,输入流的内容(zip 文件的内容)在浏览器窗口中显示为文本,而不是提示下载。l
这是发送响应的代码:
res.statusCode = 200;
res.setHeader ('Content-Length', size);
res.setHeader ('Content-Type', 'application/zip');
console.log ("content-type is " + res.header('Content-Type'));
inputStream.pipe (res);
上面的 console.log 语句输出“content-type is application/zip”。
但是,当我在 Chrome 的网络选项卡中检查请求时,我看到响应的内容类型是“application/json”。这意味着 express 或其他东西正在覆盖我的内容类型标头,或者可能已经发送了它。
有谁知道是什么改变了我的内容类型,以及我如何确保内容类型是我设置的?
谢谢你的帮助。