Узел 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();
}) }); });
Любая помощь будет оценена.