Я хочу скачать zip-файл с помощью Express, суть в том, что когда я пытаюсь загрузить txt-файл, он работает правильно, он загружает то, что я хочу.Но в случае формата .zip он загружает пустой файл с точным именем, которое я хочу, но в формате txt.
static getFile(req, res) {
fileManager.getfile(req, (r) => {
if (!r.success) {
return res.status(r.code).send(r);
}
return res.download(r.result.zipFileDirName + r.result.zipFileName);
});
}
this is the get file functuion
getFile(req, callback) {
let validation = reportValidator.validateGetFile(req);
if (!validation.success) {
return callback(validation);
}
let findQuery = validation.result.query;
Something.find(findQuery).exec((err, gh) => {
if (err) {
logger.error(`Error while finding somehting, err : ${err}`);
return callback({success: false, code: 500, err: err});
}
let dirName = parentDir + req.query.accountId + '_' + req.query.dateFrom + '_' + req.query.dateTo + '/';
let archive = archiver('zip', {
gzip: true,
zlib: { level: 9 }
});
archive.on('error', (err) => {
logger.error(err);
return callback({success: false, code: 500, err: err});
});
archive.on('end', () => {
console.log('Archive wrote %d bytes', archive.pointer());
});
let zipFileName = req.query.accountId + '_' + req.query.dateFrom + '_' + req.query.dateTo + '.zip';
let zipFile = fs.createWriteStream(dirName + zipFileName);
archive.pipe(zipFile);
async.each(gh,
(item, next) => {
let fileName = item.handId + '_' + Date.now() + '.mat';
this.makeReportingFile(dirName, fileName, item.gameInfo, r => {
if (!r.success) {
return next(err);
}
archive.file(r.result.file, {name: item.handId + '.mat'});
next(null, 'OK');
});
},
(err) => {
if (err) {
logger.error(JSON.stringify(err));
return callback({success: false, code: 500, err: err});
}
archive.finalize();this on end
return callback({success: true, code: 200, result: {message: "OK", zipFileDirName: dirName, zipFileName: zipFileName}});
});
});
}
Я предоставил дополнительную информацию