【发布时间】:2018-06-22 14:53:33
【问题描述】:
最近,我在一个项目中偶然发现了一个问题,我无法找到一个真正令人满意的解决方案。
我想要一个让用户下载文件的端点。为此,我使用了 Express 的功能 res.download(filename),效果很好。但是,在我的场景中,文件放在服务器上,所以我必须先下载它。我目前正在做的是使用请求模块请求文件,使用 fs 将其保存到文件系统,然后让用户下载它。然后我删除它。
我认为这不是一个好的解决方案,我想知道是否有更好的方法。
我正在尝试这样的事情:
app.get('/download', (req, res) => {
const url = 'https://i.imgur.com/4BZWw57.jpg',
r = request(url);
r.on('response', function(response) {
response.pipe(res.download('response.headers.date'));
console.log(response);
});
});
是否可以不将文件保存在我的文件系统上,而是立即将其流式传输给用户?
【问题讨论】:
-
您需要更改 content-disposition 标头
标签: node.js express download pipe