Исходя из этого вопроса, я не могу заставить браузер инициировать загрузку из 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');
и переход к внутреннему URL через запрос GET (за ответ на мой оригинальный вопрос), но ни один из них не инициирует загрузку в браузере.
Я думаю, что это проблема внешнего интерфейса, поскольку, когда я дважды щелкаю по загрузке в консоли, она открывается. Внешний интерфейс получает данные, но браузер (Chrome) не загружает их. Я также попробовал Firefox, тот же результат.
Есть много подобных запросов, но ни один не решил проблему для меня.