在 Node JS 中管道远程文件寻找替代方法

Piping Remote files in Node JS looking for alternative ways

我使用的是 request 模块,现在已弃用。在不存储在服务器中的情况下通过管道传输远程文件很有用。所以寻找与 Node-fetch、GOT、Axios 等具有相同功能的替代解决方案。

import request from 'request';

    (req, res) { 
       return request(`http://files.com/image.jpg`)
            .on('error', (err) => {
              log.error('error fetching img url: %O', err);
              res.status(500).end('error serving this file');
            })
            .on('response', (urlRes) => {
              if (urlRes.statusCode === 304) return;
              urlRes.headers['content-disposition'] = `inline;filename="${slug}"`;
            })
            .pipe(res);
        }

我刚刚用 node-fetch 模块尝试了这种方法,它有效。但它不会像 request 模块中那样通过管道传输响应 headers。所以我们需要手动设置所需的 headers。

import fetch from 'node-fetch';
(req, res) {
 fetch('http://files.com/image.jpg').then((response) => {
      res.set({
        'content-length': response.headers.get('content-length'),
        'content-disposition': `inline;filename="${slug}"`,        
        'content-type': response.headers.get('content-type'),        
      })
      response.body.pipe(res);
      response.body.on('error', () => {}) // To handle failure
    });
}