最近我正在做一个项目,我偶然发现了一个问题,我无法找到一个真正令人满意的解决方案。我想要一个端点,让用户下载一个文件。为此,我使用了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);
});
}(;
是否可以不将文件保存在我的文件系统上,而是立即将其流式传输给用户?
我做了类似的事情:
app.get('/download', (req, res) => {
const url = 'https://i.imgur.com/4BZWw57.jpg',
r = request(url);
req.pipe(r);
r.pipe(res);
});