Попытка правильно загрузить ZIP-файл с помощью экспресс - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу скачать 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}});
                });
        });
    }

Я предоставил дополнительную информацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...