Загрузка Zip-файла через Axios с экспресс-сервера не работает в приложении React

#node.js #reactjs #express #axios #download

#node.js #реагирует на #экспресс #аксиос #Скачать

Вопрос:

Я внедрил серверную часть, где администраторы могут создавать резервные копии. Эти резервные копии собираются в zip-файлы и хранятся в общедоступной папке на сервере.

Администраторы должны иметь возможность впоследствии загружать zip-файлы. Но это не работает должным образом. Файл загружен, но при попытке его распаковать появляется сообщение «Была предпринята попытка переместить указатель файла перед началом файла«. Похоже, проблема не в zip — файле. Если вы распакуете его на сервере, распаковка будет работать без ошибок. Должно быть, что-то не так с процессом загрузки.

 const downloadHandler = (params) =gt; {  axios.get(`/backup/download?name=${params.filename}`).then((res) =gt; {  const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));  const link = document.createElement('a');  link.href = downloadUrl;  link.setAttribute('download', 'file.zip');  document.body.appendChild(link);  link.click();  link.remove();  });  };  

Средство загрузки, показанное выше, вызывается в приложении React, как только пользователь нажимает кнопку загрузки резервной копии. После этого откроется меню загрузки браузера для прямой загрузки.

Реализация сервера:

 router.route('/backup/download').get((req, res, next) =gt; {  try {  res.download(path.join(backupPath, req.query.name));  } catch (err) {  next(err);  } });  

Я уже потратил несколько часов на поиски решения, но, что бы я ни пытался, оно не работает. Проблема, как я уже сказал, в том, что файл не может быть разархивирован после загрузки.