如果我在地址栏中关注它,我有和API链接会自动开始下载文件。我们称之为 my-third-party-downloads-link-com 。
但是在Express框架中我设置了res.redirect(my-third-party-downloaded-link-com)。我获取状态代码301,可以在开发人员工具的预览选项卡中查看文件内容。但是我不能让浏览器下载这个文件。
我的相应请求处理程序如下:
downloadFeed(req, res) {
const { jobId, platform, fileName } = req.query;
const host = platform === 'production' ? configs.prodHost :
configs.stageHost;
const downloadLink = `${host}/api/v1/feedfile/${jobId}`;
// I also tried with these headers
// res.setHeader('Content-disposition', 'attachment;
// filename=${fileName}.gz');
// res.setHeader('Content-Type', 'application/x-gzip');
res.redirect(downloadLink)
}
PS 现在,要解决此问题,我在后端构建 my-third-party-downloaded-link-com ,并使用res.end发送它然后:
window.open(**my-third-party-downloading-link-com**, '_blank').
但我不喜欢这个解决方案。如何告诉浏览器开始从此第三方API下载内容?
答案 0 :(得分:-1)
根据文档,您应该使用res.download()强制浏览器提示用户下载。