@AndreyFreeL

Как скачать файл формата zip с сервера?

Необходимо скачать через интерфейс заархивированный файл в формате zip.
Серверная сторона Express.js + Node.js
//В пост запросе принимается название файла
router.post("/getDownloadFile", async function (req, res){
 // Далее указываю путь до файла
  const file = `${__dirname}/../files/${req.body.fileName}`; 
 // Устанавливаю заголовок, что это сохранение файла
  res.setHeader('Content-disposition', 'attachment; filename=' + req.body.fileName + '.zip');
 //Отправляю этот файл
  res.download(file);
});


Клиентская сторона на React

// В запросе передаю название файла file
axios.post(`${config.url}/exchange/getDownloadFile`, {fileName: file}, {headers: {
             'responseType': 'blob'
            }
        }).then(function (response) {
           // Создаю url с полученными данными файла
            const url = window.URL.createObjectURL(
                new Blob([response.data], {type: "application/zip"}),
              );
           // Создаю элемент ссылки
            const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', file,);
                document.body.appendChild(link);

            // Запускаю клик по ссылке
            link.click();

            // Удаляю ссылку
            link.parentNode.removeChild(link);
          })


Проблема следующая, то что файл скачивается, но когда я пытаюсь открыть, он показывает, что неверный формат, и я не понимаю, это сервер мне присылает битые данные или реакт мне отдаёт битый файл или я неправильно реализовываю скачивание файла с сервера?
6104082bc424e718139411.png
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы