问题 在ExpressJS中管道远程文件


我想读一个远程图像并显示它。我可以保存文件但不能正确显示代码。理想情况下,我只想在不进行处理的情况下正确传递文件 - 不确定是否需要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();
  });
});

3605
2017-08-25 19:23


起源



答案:


好吧,我仍然想知道如何完成上述工作,但我在一行中解决了我的问题 请求 模块!

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

15
2017-08-25 20:44



这要好得多。您没有将文件保存在磁盘上。如果你想保存响应,之后 response.pipe(outstream); 你必须重新打开文件 createreadstream 把它管道 res。在你做的问题 res.pipe(outstream); 这是一个错误。你必须管道文件 res。 - user568109
我喜欢这个答案: stackoverflow.com/questions/11355366/nodejs-redirect-url - Ron


答案:


好吧,我仍然想知道如何完成上述工作,但我在一行中解决了我的问题 请求 模块!

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

15
2017-08-25 20:44



这要好得多。您没有将文件保存在磁盘上。如果你想保存响应,之后 response.pipe(outstream); 你必须重新打开文件 createreadstream 把它管道 res。在你做的问题 res.pipe(outstream); 这是一个错误。你必须管道文件 res。 - user568109
我喜欢这个答案: stackoverflow.com/questions/11355366/nodejs-redirect-url - Ron