Express res.redirect显示内容但不下载

时间:2017-07-03 21:58:27

标签: node.js express http-headers

如果我在地址栏中关注它,我有和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下载内容?

1 个答案:

答案 0 :(得分:-1)

根据文档,您应该使用res.download()强制浏览器提示用户下载。

http://expressjs.com/es/api.html#res.download