1. 程式人生 > >在Node.js中在保持目錄結構的情況下壓縮指定目錄

在Node.js中在保持目錄結構的情況下壓縮指定目錄

事件 信息 處理 方式 evel ack api not 說明

最近在做一個文件升級的功能,需要從下載服務器中指定目錄下的文件。在學習了zlib後發現這個模塊達不到這個功能

在查找資料後發現後發現 archiver 模塊很好用,不過我也發現大部分中文資料沒有如果查詢壓縮進度,所以在此分享一下:

archiver的github地址:

https://github.com/archiverjs/node-archiver

API文檔地址:

https://archiverjs.com/docs/

壓縮等級說明:

var archive = archiver(‘zip‘, {
  zlib: { level: 9 } // Sets the compression level.
});

找了一下文檔發現竟然沒有說明壓縮等級的說明,所以只好翻了一下源代碼,找到之後復制到notepad+上,結果在寫此文時不小心關掉了,參數不太確定。
-1是默認
0是最低(不太確認)
9是最高

獲取進度信息:

global.packageProgress={};
archive.on(‘progress‘, function(progress) {
  console.log(progress);
  packageProgress=progress;
});

只需要綁定這個時間就可以了,事件都可以用這種方式來綁定,具體事件可以參考API文檔。

本人使用了2個get路由,第一個用來讓node.js開始進行打包處理,設置一個globel變量,然後在綁定的progress事件中不斷賦值。
第二個則是返回進度信息用的。(前端輪詢)

在Node.js中在保持目錄結構的情況下壓縮指定目錄