files - Archivos zip en node.js
node zip folder (9)
Quiero crear un archivo zip y descomprimirlo en node.js. No puedo encontrar ninguna implementación de nodo. Por favor ayuda.
He utilizado ''archivador'' para comprimir archivos. Aquí está uno de los enlaces de que muestra cómo usarlo, enlace de para comprimir archivos con archivador
Puede usar el módulo edge.js que admite la interoperabilidad entre node.js y .NET en el proceso, y luego llamar a la clase ZipFile de .NET framework que le permite manipular los archivos ZIP. Este es un ejemplo completo de cómo crear un paquete ZIP usando edge.js. También puedes ver el ejemplo de descompresión usando edge.js.
Puedes usar el módulo archiver , fue muy útil para mí, aquí hay un ejemplo:
var Archiver = require(''archiver''),
fs = require(''fs'');
app.get(''download-zip-file'', function(req, res){
var archive = Archiver(''zip'');
archive.on(''error'', function(err) {
res.status(500).send({error: err.message});
});
//on stream closed we can end the request
res.on(''close'', function() {
console.log(''Archive wrote %d bytes'', archive.pointer());
return res.status(200).send(''OK'').end();
});
//set the archive name
res.attachment(''file-txt.zip'');
//this is the streaming magic
archive.pipe(res);
archive.append(fs.createReadStream(''mydir/file.txt''), {name:''file.txt''});
//you can add a directory using directory function
//archive.directory(dirPath, false);
archive.finalize();
});
Si no desea usar / aprender una biblioteca, puede usar el nodo para controlar las herramientas de la línea de comandos zip ejecutando procesos secundarios
Aunque recomiendo aprender una biblioteca como la mencionada por Emmerman
Si solo necesita descomprimir, node-zipfile parece tener menos peso que github.com/pquerna/node-archive . Definitivamente tiene una curva de aprendizaje más pequeña.
Terminé haciéndolo así (estoy usando Express). Estoy creando un ZIP que contiene todos los archivos en un directorio determinado (SCRIPTS_PATH).
Solo probé esto en Mac OS X Lion, pero creo que funcionará bien en Linux y Windows con Cygwin instalado.
var spawn = require(''child_process'').spawn;
app.get(''/scripts/archive'', function(req, res) {
// Options -r recursive -j ignore directory info - redirect to stdout
var zip = spawn(''zip'', [''-rj'', ''-'', SCRIPTS_PATH]);
res.contentType(''zip'');
// Keep writing stdout to res
zip.stdout.on(''data'', function (data) {
res.write(data);
});
zip.stderr.on(''data'', function (data) {
// Uncomment to see the files being added
//console.log(''zip stderr: '' + data);
});
// End the response on zip exit
zip.on(''exit'', function (code) {
if(code !== 0) {
res.statusCode = 500;
console.log(''zip process exited with code '' + code);
res.end();
} else {
res.end();
}
});
});
node-core ha incorporado funciones zip: http://nodejs.org/api/zlib.html
Usalos, usalos a ellos:
var zlib = require(''zlib'');
var gzip = zlib.createGzip();
var fs = require(''fs'');
var inp = fs.createReadStream(''input.txt'');
var out = fs.createWriteStream(''input.txt.gz'');
inp.pipe(gzip).pipe(out);
Es una biblioteca solo de javascript para leer, crear y modificar archivos zip en la memoria.
Se ve bien, pero es un poco buggy. Tuve algunos problemas para descomprimir un archivo de texto.