提问者:小点点

如何使用Express从url下载文件?


我有一个图像文件“https://cdn.my.com/image1.png”。

我想从我的API创建一个到这个url的代理。

api.get('/download', (req, res) => {

 const url = "https://cdn.my.com/image1.png";

 res.download(url);
});

我认为download需要一个文件位置作为参数,而不是URL。

我如何下载url作为代理? (不想等下载完成后再发响应)


共2个答案

匿名用户

您需要先request文件,然后pipe将响应发送到res-object。 像这样的东西:

const request = require('superagent')

api.get('/download', (req, res) => {
   res.set(
     'Content-Disposition',
     'attachment; filename=some_file_name.png'
   );

   request("https://cdn.my.com/image1.png").pipe(res);
});

匿名用户

您的URL是一个字符串。 如果你想下载它,你也得获取/阅读文件。

尝试:

const https = require('https');
api.get('/download', async (req, res) => {
 const img = await https.get('https://cdn.my.com/image1.png');
 res.download(img);
});

我现在没试过,但这个应该管用。