node files entire descargar create node.js zip

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.




Puedes probar node-zip módulo node-zip npm.

Lleva JSZip al nodo, para comprimir / descomprimir archivos zip.


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(); });




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);


adm-zip

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.