#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); } });
Я уже потратил несколько часов на поиски решения, но, что бы я ни пытался, оно не работает. Проблема, как я уже сказал, в том, что файл не может быть разархивирован после загрузки.