我现在使用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. Android - 解压缩文件夹?
- 7. 如何使用zlib.h库将.zip文件解压缩到文件夹中?
- 8. 将zip文件解压缩到文件夹的根目录?
- 9. Java ZIP - 如何解压缩文件夹?
- 10. 在Android中解压缩文件夹
- 11. 如何将文件压缩到归档的指向文件夹?
- 12. 将.xip文件解压缩到特定文件夹
- 13. 如何排除YUI压缩文件夹中的文件夹
- 14. 解压缩文件夹并从解压缩文件中获取图像
- 15. node.js如何流化22GB gzip压缩文件解压缩
- 16. 如何压缩文件夹中
- 17. 如何在grunt中压缩文件夹?
- 18. 如何在MSBuild中压缩文件夹?
- 19. 压缩/解压缩文件夹和文件
- 20. 使用Java压缩和解压缩文件夹和文件
- 21. 压缩和解压缩文件和文件夹
- 22. 如何将文件夹压缩为zip?
- 23. 如何将文件夹压缩为.ngz
- 24. 如何解压文件夹并删除压缩的原件?
- 25. 如何在Android中压缩特定文件夹中的文件夹和文件?
- 26. 解压压缩文件夹中的文件与批处理文件
- 27. 如何使用rubyzip解压缩压缩文件夹
- 28. 将.gz文件解压缩到不同的文件夹中,并将它们合并到一个文件中
- 29. 在yii中压缩/解压缩文件
- 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'}));但我得到一个错误。 –