Узел js: загрузите большой zip-файл, используя узел js, используя два потока

Я пытаюсь загрузить zip-файл, используя сервер Node Js.

Моя постановка проблемы лежит ниже:

У меня есть CDN, где существуют реальные файлы. Я читаю файлы из CDN в виде потока, а затем с помощью модуля архива.

Я передаю его в ответ. Я отправляю его два раза.

  • Сначала во время чтения файла из CDN и предоставления потока в архиватор

  • отправка файла prodct.zip в ответ.

Этот код работает при быстром сетевом подключении клиента.

Если он немного медленный, то он не загрузит полный файл или загрузит поврежденный zip-файл.

Ниже мой код:

app.get('/frontEndGetFile/', function(req,res)
    {
    var archive = archiver('zip');
    archive.store = true;
    var header = {

        "Content-disposition": 'attachment;filename=sampleDownload.zip',
        "Transfer-Encoding": "chunked",
        "Content-Transfer-Encoding": "binary"
    };
    res.writeHead(200, header);

    archive.pipe(res);
    var fileArr=['Postman-win64-6.1.2-Setup.exe','Microsoft.DataTransfer.Sql.dll','TEST 5GB different types of files (1).zip','Software.zip'];

    async.eachSeries(fileArr, function(fileObj, outCb) 
    {
    const stream = request("http://CDN-URL/getFile?file="+fileObj);

        archive.append(stream, { name: "parentDirectory" + '/'+fileObj });
        stream.on('end',function(){
            if(fileObj === fileArr[fileArr.length-1]){archive.finalize();}
        outCb();
        })  }); }); 

Любая помощь будет оценена.

0 ответов

Другие вопросы по тегам