Невозможно получить браузер, чтобы начать загрузку из экспресс - PullRequest
0 голосов
/ 05 января 2019

Исходя из этого вопроса, я не могу заставить браузер инициировать загрузку из 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, тот же результат.

Есть много подобных запросов, но ни один не решил проблему для меня.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Проблема в вашем коде заключается в том, что вы не передаете правильный URL-адрес window.open. Вам необходимо включить http://

window.open('http://localhost:3000/download');
0 голосов
/ 05 января 2019

В целях безопасности сказано, что вы должны открыть новую вкладку, если хотите что-то скачать.
Так что используйте

window.open('http://localhost:3000/download','_blank')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...