在 Node JS 中管道远程文件寻找替代方法
Posted
技术标签:
【中文标题】在 Node JS 中管道远程文件寻找替代方法【英文标题】:Piping Remote files in Node JS looking for alternative ways 【发布时间】:2020-12-26 15:33:40 【问题描述】:我使用的是 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);
【问题讨论】:
【参考方案1】:我刚刚用node-fetch
模块尝试过这种方式,它可以工作。但它不像 request
模块中那样通过管道传输响应标头。所以我们需要手动设置所需的标题。
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
);
【讨论】:
以上是关于在 Node JS 中管道远程文件寻找替代方法的主要内容,如果未能解决你的问题,请参考以下文章
将 Node.js+Socket.io 包装成 OSX 可执行文件的可靠方法? (或用作替代品的 C/C++/Objective-C 库)
如何使用 node.js 顺序读取 csv 文件(使用流 API)
node.js - 将图像缓存到文件系统并将图像通过管道传输到响应