Я пытаюсь заархивировать несколько файлов на сервере и загрузить их по запросу пользователя. Я использую adm-zip для архивирования файлов.
Файлы добавляются отлично и архивируются. zip.writeZip ('') прекрасно архивирует файлы и сохраняет их на локальном сервере. Я просто не могу их скачать. В любом случае, я думаю, что было бы лучше, если бы я мог отправлять zip напрямую через буфер.
router.get(
"/download-zip/:season_id/:club_id",
passport.authenticate("jwt", { session: false }),
(req, res) => {
FileSubmission.find({
season: req.params.season_id,
club: req.params.club_id
}).then(files => {
const zip = new AdmZip();
files.forEach(file => {
// add local file
zip.addLocalFile(`uploads/club-uploads/${file.club}/${file.name}`);
});
res.download(zip.toBuffer(), "asd.zip");
});
}
);
На передней панели я использую реагирование с действиями и библиотеку js-file-download
// Download ALL FILES by season ID and club ID
import fileDownload from "js-file-download";
export const downloadAllFiles = (season_id, club_id) => dispatch => {
axios
.get(`/api/files/download-zip/${season_id}/${club_id}`)
.then(response => {
fileDownload(response.data, `All Files- ${club_id}.zip`);
})
.catch(err => {
console.log(err);
dispatch({ type: GET_ERRORS, payload: err.response.data });
});
};