在Node.js中在保持目錄結構的情況下壓縮指定目錄
阿新 • • 發佈:2018-02-08
事件 信息 處理 方式 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中在保持目錄結構的情況下壓縮指定目錄