Node js:使用两个流使用Node js下载大zip文件

时间:2018-07-31 14:30:24

标签: node.js node-archiver

我正在尝试使用Node Js服务器下载一个zip文件。

我的问题陈述如下:

我有 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 个答案:

没有答案