我現在使用zlib和fstream一起壓縮併發送到客戶端,現在我需要解壓縮一個存檔(可能包含子文件夾)到維護文件夾結構的文件夾中。我怎麼做?如何將Node.js中的.zip/.rar文件解壓縮到文件夾中
回答
有很多節點模塊可以爲你做到這一點。其中之一是節點解壓縮。您可以像這樣簡單地將.zip文件提取到目錄。
fs.createReadStream('path/to/archive.zip').pipe(unzip.Extract({ path: 'output/path' }));
我可以使用zlib而不使用unzip嗎? – Raghavendra
@Raghav我相信zlib是用於處理GZip而不是Zip。 – gpopoteur
@gpopoteur嗨,我知道這篇文章是相當古老的,但它對我很有幫助。你能告訴我如何知道什麼時候fs.createReadStream('path/to/archive.zip')。pipe(unzip.Extract({path:'output/path'}));完成?完成後我想做點什麼:) –
的RAR是一個封閉的代碼的軟件。你能做到這一點的唯一方法 - 安裝命令行RAR(RAR,這是可以在大多數平臺上的RAR.EXE或Linux版本),並通過這種方式稱之爲:
var exec = require('child_process').exec;
exec("rar.exe x file.rar", function (error) {
if (error) {
// error code here
} else {
// success code here
}
});
您可以使用此令人讚歎的模塊http://node-machine.org/machinepack-zip
的解壓與目錄結構的zip文件內袋
var Zip = require('machinepack-zip');
//解壓縮指定的.zip文件和寫解壓縮的文件/目錄作爲指定的目標目錄的內容。
Zip.unzip({
source: '/Users/mikermcneil/stuff.zip',
destination: '/Users/mikermcneil/my-stuff',
}).exec(callbackSuccess, callbackFail);
下載遠程文件並解壓您可以使用此代碼:
var fs = require('fs');
var unzip = require("unzip2");
var tar = require('tar');
var zlib = require('zlib');
var path = require('path');
var mkdirp = require('mkdirp'); // used to create directory tree
var request = require("request");
var http = require('http');
var zip = require("machinepack-zip");
for (var i = 0; i < _diff.length; i++) {
request(constants.base_patch +"example.zip")
request = http.get({ host: 'localhost',
path: '/update/patchs/' + "example.zip",
port: 80,
headers: { 'accept-encoding': 'gzip,deflate' } });
request.on('response', (response) => {
var output = fs.createWriteStream(__dirname + "/tmp/" +"example.zip");
switch (response.headers['content-encoding']) {
// or, just use zlib.createUnzip() to handle both cases
case 'gzip':
response.pipe(zlib.createGunzip()).pipe(unzip.Extract({ path: __dirname }));
break;
case 'deflate':
response.pipe(zlib.createInflate()).pipe(unzip.Extract({ path: __dirname }));
break;
default:
response.pipe(output);
break;
}
})
request.on('close', function(){
zip.unzip({
source: __dirname + "/tmp/" + "example.zip",
destination: __dirname,
}).exec({
error: function (err){
alert("error")
},
success: function(){
//delete temp folder content after finish uncompress
},
});
})
}
注:去掉unnecesary模塊。
- 1. Node.js - 壓縮/解壓縮文件夾
- 2. 如何在Silverlight中壓縮和解壓縮文件夾及其子文件夾?
- 3. 如何在asp.net框架4.0中壓縮/解壓縮文件夾
- 4. 如何將未壓縮文件夾視爲壓縮文件?
- 5. 壓縮和解壓縮文件夾
- 6. 無法將文件從壓縮文件夾複製到非壓縮文件夾
- 7. Android - 解壓縮文件夾?
- 8. 如何使用zlib.h庫將.zip文件解壓縮到文件夾中?
- 9. 將zip文件解壓縮到文件夾的根目錄?
- 10. Java ZIP - 如何解壓縮文件夾?
- 11. 在perl中將文件添加到壓縮文件夾中
- 12. 在Android中解壓縮文件夾
- 13. 解壓縮文件夾中使用Java
- 14. 如何將文件壓縮到歸檔的指向文件夾?
- 15. 如何只壓縮文件夾內的文件而不壓縮子文件夾?
- 16. 將.xip文件解壓縮到特定文件夾
- 17. 使用Python將文件解壓縮到一個文件夾
- 18. 如何排除YUI壓縮文件夾中的文件夾
- 19. 解壓縮文件夾並從解壓縮文件中獲取圖像
- 20. node.js如何流化22GB gzip壓縮文件解壓縮
- 21. 壓縮/解壓縮文件夾和文件
- 22. 壓縮和解壓縮文件和文件夾
- 23. 如何壓縮文件夾中
- 24. 如何在MSBuild中壓縮文件夾?
- 25. 如何在grunt中壓縮文件夾?
- 26. 如何將文件夾壓縮爲zip?
- 27. 如何將文件夾壓縮爲.ngz
- 28. 如何解壓文件夾並刪除壓縮的原件?
- 29. 如何在Android中壓縮特定文件夾中的文件夾和文件?
- 30. 解壓壓縮文件夾中的文件與批處理文件
你好我可以知道如何將整個文件夾壓縮成一個zip文件。我嘗試使用fstream.Reader({path:「E:\\ d data \\ electron \\ Applications \\ FirstApp \\ js \\ temp \\」,鍵入:「Directory」}) \t .pipe新的tar.Pack()) \t .pipe(zlib.Gzip()) \t .pipe(fstream.Writer({path:「C:\\ Users \\ Raina \\ AppData \\ Local \\ Temp」, file:'compressed_folder.tar.gz'}));但我得到一個錯誤。 –