改变管道响应的内容处理

时间:2015-09-22 19:49:46

标签: node.js express

我有以下控制器从服务中获取文件并将答案传递给浏览器。

function (req,res){
  request.get(serviceUrl).pipe(res);
}

我想更改内容处理(从附件到内联),以便浏览器打开文件而不是直接下载。

我已经尝试过了,但它无法正常工作:

function (req,res){
  res.set('content-disposition','inline');
  request.get(serviceUrl).pipe(res);
}

我正在使用的版本是:

  • NodeJS:0.12.x
  • 快递:4.x

1 个答案:

答案 0 :(得分:0)

为此,您可以在请求和响应之间使用中间passtrhough流,然后请求的标头不会传递给响应:

var through2 = require('through2'); // or whatever you like better

function (req, res) {
  var passThrough = through2(); // this stream is necessary to put correct response headers
  res.set('content-disposition','inline');
  request.get(serviceUrl).pipe(passThrough).pipe(res);
}

但要小心,因为这会忽略所有标题,您可能需要指定' Content-Type'等。