【问题标题】:Cannot get browser to initiate download from express无法让浏览器从 express 开始下载
【发布时间】:2019-01-05 16:26:51
【问题描述】:

this 问题之后,我无法让浏览器从 express 启动下载。后端代码:

app.get('/download', (req, res) => {
  res.download('./textfile.txt', (err) => {
    if (err) {
      console.log('error: ' + err);
    }   else {
      console.log('success');
    }
  });
})

我已从 .gpx 文件更改为文本文件,以确保它与此无关,并且我尝试使用以下标题,但无济于事:

res.header('Content-Type', 'text/plain')
res.header('Content-Security-Policy', 'upgrade-insecure-requests');

在前端我尝试过:

window.location.href = 'localhost:3000/download';

和:

const filePath = 'localhost:3000/download';
const link = document.createElement('a');
link.href = filePath;
link.download = filePath.substr(filePath.lastIndexOf('/') + 1);
link.click();

和:

const newWindow = window.open('localhost:3000/download', 'download');

并通过 GET 请求导航到后端 url(根据对我原始问题的回复),但它们都没有在浏览器中启动下载。

我认为是前端的问题,当我在控制台中双击下载时,它会打开。前端正在获取数据,但浏览器(chrome)没有下载它。我也试过火狐,结果一样。

有很多类似的查询,但没有一个为我解决问题。

【问题讨论】:

  • 在浏览器中打开网址localhost:3000/download,查看是否下载。如果不是,那么您的快速服务器就是问题所在,或者检查开发工具中的网络面板。
  • 是的,没有问题。文件自动下载。问题是我认为前端 - 我无法让浏览器在代码中启动下载。

标签: javascript node.js express


【解决方案1】:

您的代码中的问题是您没有将正确的 url 传递给 window.open。您需要包含http://

window.open('http://localhost:3000/download');

【讨论】:

  • 啊,翻转''eck。我知道当我找到它时我会很明显。谢谢。
【解决方案2】:

为了安全起见,据说如果你想下载一些东西,你必须打开新标签。
所以用

window.open('http://localhost:3000/download','_blank')

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 2016-04-17
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多