Browse Source

Добавлен метод unpack

Book Pauk 5 years ago
parent
commit
4ddf28f344
1 changed files with 20 additions and 1 deletions
  1. 20 1
      server/core/ZipStreamer.js

+ 20 - 1
server/core/ZipStreamer.js

@@ -52,7 +52,26 @@ class ZipStreamer {
         })().catch(reject); });
     }
 
-    unpack(zipFile, entryCallback) {
+    unpack(zipFile, outputDir, entryCallback) {
+        return new Promise((resolve, reject) => {
+            entryCallback = (entryCallback ? entryCallback : () => {});
+            const unzip = new unzipStream({file: zipFile});
+
+            let files = [];
+            unzip.on('extract', (en) => {
+                const entry = {path: en.name, size: en.size, compressedSize: en.compressedSize};
+                entryCallback(entry);
+                files.push(entry);
+            });
+
+            unzip.on('ready', () => {
+                unzip.extract(null, outputDir, (err) => {
+                    if (err) reject(err);
+                    unzip.close();
+                    resolve(files);
+                });
+            });            
+        });
     }
 }