node批量下載文件,打包成壓縮包(以圖片做例子)


備注說明:

1.需要依賴 archiver
2.調用方法的時候,一定要加上try...catch...
try {
await all_down(list,response)
}catch (e) {
}
3.所有的文件流追加完后,一定記得
archive.finalize();
 
        
 1 //引入依賴
 2 var archiver = require('archiver');
 3 //定義參數
 4  let list=[{path:‘img1.png’,name:'圖片1'},{path:‘img2.png’,name:'圖片2'}]
 5 
 6 async function all_down(list,response) {
 7     var archive = archiver('zip');//設置壓縮包類型
 8     archive.on('error', function(err) {
 9         throw err;
10     });
11     archive.store = true;  
12     archive.pipe(response);
13 
14     for (let i=0;i<list.length;i++) {
15         let item=list[i]
16         let path=item.path
17         let stream =fs.createReadStream(path);//獲取圖片流
18         let index=path.lastIndexOf('.')
19         let extname=path.substring(index)//獲取圖片后綴名
20         let name = item.name+extname;  //定義成需要的名稱
21         archive.append(stream, { name: name })
22            if (i==list.length-1){
23              //最后一個文件流append到archive后,關閉archive
24                archive.finalize();
25            }
26     };
27     var fileName = 'text.zip';//壓縮包名稱
28    //設置header
29     response.setHeader('Content-Type', 'application/x-zip');
30     response.setHeader("Content-Disposition", "attachment; filename=" + new Buffer(fileName).toString('binary'));
31     archive.on('finish', function(err) {
32         response.end('binary');
33     });
34 }
View Code

 最終結果:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM