поврежден zip-файл при отправке его в угловой интерфейс - PullRequest
0 голосов
/ 28 мая 2019

BACKEND CALL

router.post('/exportZip', async function (req, res) {
const source = path.join('./publics/', req.body.id);
const out = './publics/' + req.body.id + '.zip';
const archive = archiver('zip', { zlib: { level: 0 } });
const stream = fs.createWriteStream(out);

return new Promise((resolve, reject) => {
    archive
        .directory(source, false)
        .on('error', err => reject(err))
        .pipe(stream)
        ;

    stream.on('close', () => {
        resolve()
    });
    archive.finalize().then(function () {
        res.status(200).download(path.join(__dirname, '.' + out), function (err) {
            fs.unlink(out, function (err) {
                if (err) console.log(err);
            })
        });

    });
});

});

УГЛОВОЙ СЕРВИС

exportSubmissionsAsZip(contest){
    return this.http.post('/exportZip', {id:_id}, {
      responseType: 'arraybuffer',
      headers: new HttpHeaders({ 'Content-Type': 'application/json'})
    });
  }

УГЛОВОЙFRONTEND

downloadSubmissions(event){
    this.contest.exportSubmissionsAsZip(event).subscribe(res =>{
      console.log(res);
      var blob = new Blob([res], {type: "application/zip"})
      saveAs(blob, event._id+'.zip')
    })
  }

Так что каким-то образом я получаю поврежденные пакеты при загрузке с моего сервера,

enter image description here

, надеюсь,кто-то может помочь мне с этой проблемой, потому что не имеет значения, что я изменил до сих пор.проблема осталась прежней.

Обновление:

По какой-то причине буфер массива больше, чем сам файл

enter image description here enter image description here

ОБНОВЛЕНИЕ после добавления наблюдателя ответа: enter image description here

...