在ExpressJS中管道远程文件

时间:2013-08-25 19:23:04

标签: javascript node.js express

我想阅读远程图像并显示它。我可以保存文件但不能正确显示代码。理想情况下,我只想在不进行处理的情况下正确传递文件 - 不确定是否需要tmp文件步骤。此代码不显示任何内容 - 没有错误。我也尝试了res.pipe(响应)。

var url = 'http://proxy.boxresizer.com/convert?resize=50x50&source=' + filename

var request = http.get(url, function(response) {

  var tmp = path.join(require('os').tmpDir(), filename);

  var outstream = require('fs').createWriteStream(tmp);

  response.pipe(outstream);
  response.on('end', function() {
    res.set('Content-Type', 'image/jpg');
      res.pipe(outstream);
      res.end();
  });
});

2 个答案:

答案 0 :(得分:23)

我还是想知道如何完成上述工作,但我用request模块解决了我的问题!

var url = 'http://proxy.boxresizer.com/convert?resize=50x50&source=' + filename
require('request').get(url).pipe(res);  // res being Express response

答案 1 :(得分:1)

由于 request 已弃用,您也可以像这样使用 node-fetch

app.get("/", (req, res) => {
    fetch(fileUrl).then(file => {
        file.headers.forEach((v, n) => res.setHeader(n, v));
        file.body.pipe(res);
    });
});