Как использовать res.redirect после успешной загрузки файла с res.download в Express JS? - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь загрузить файл и после загрузки удалить указанный файл, перенаправить на другую страницу и отобразить сообщение fla sh (см. Код ниже):

fs.writeFileSync(user.username + "_invoice_data.xml", tofile);

res.download(user.username + "_invoice_data.xml", function(err){
    if(err){
        fs.unlinkSync(user.username + "_invoice_data.xml");
        req.flash("error", "Valid. Download error...");
        return res.redirect('/arinvoicedata');
    }
    else{
        fs.unlinkSync(user.username + "_invoice_data.xml");
        req.flash("success", "Valid. Downloading...");
        return res.redirect('/arinvoicedata');
    }
});

Однако я получаю следующее сообщение об ошибке:

Ошибка [ERR_HTTP_HEADERS_SENT]: Невозможно установить заголовки после их отправки клиенту

Сам файл загружается, однако ошибка выше вылетает сервер все время. Означает ли это, что res.redirect внутри обратного вызова res.download не разрешен? Какие решения вы бы предложили? Спасибо!

1 Ответ

2 голосов
/ 23 апреля 2020
  1. Вы не можете отправлять заголовок после отправки ответа на запрос.
  2. Вам нужна клиентская сторона javascript для отслеживания прогресса загрузки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...