无法使浏览器启动从快递下载

时间:2019-01-05 16:26:52

标签: javascript node.js express

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)未下载数据。我也尝试使用Firefox,结果相同。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

为了安全起见,如果要下载某些内容,则必须打开新选项卡。
因此,使用

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