48 votes

Archives Zip dans node.js

Je veux créer une archive zip et décompresser une archive dans node.js. Je ne trouve aucune implémentation de nœud. S'il vous plaît aider.

29voto

Eliseo Soto Points 635

J'ai fini par le faire comme ça (j'utilise Express). Je crée un fichier ZIP contenant tous les fichiers d'un répertoire donné (SCRIPTS_PATH).

Je n'ai testé cela que sur Mac OS X Lion, mais je suppose que cela fonctionnera parfaitement sous Linux et Windows sur lesquels Cygwin est installé.

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

28voto

MateodelNorte Points 523

node-core a des fonctionnalités zip intégrées: http://nodejs.org/api/zlib.html

Utilise les:

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

10voto

daraosn Points 81

Vous pouvez essayer le module node-zip npm.

Il porte JSZip sur le noeud, pour compresser / décompresser les fichiers zip.

1voto

Paul Beusterien Points 8051

Si vous avez seulement besoin d'unzip, node-zipfile semble être moins lourd que node-archive . Il a certainement une courbe d'apprentissage plus petite.

0voto

timoxley Points 1973

Si vous ne souhaitez pas utiliser / apprendre une bibliothèque, vous pouvez utiliser node pour contrôler les outils de ligne de commande zip en exécutant des processus enfants.

Bien que je recommande l’apprentissage d’une bibliothèque comme celle mentionnée par Emmerman

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X