Je dois obtenir un zip de l'appel de repos (pour la simulation, j'utilise un facteur avec une option binaire pour poster et ajouter un petit fichier zip avec dossier et fichier html), lors de la simulation, je souhaite obtenir les données avec express et extraire le zip et mettre Un dossier sous le lecteur C. Actuellement, lorsque je cours le programme suivant (c'est tout le code que j'ai essayé) mais j'ai l'erreur
Events.js: 85 throw er; // événement 'erreur' non géré ^ Erreur: vérification d'en-tête incorrecte à Zlib._handle.onerror (zlib.js: 366: 17)
var express = require('express'), fs = require('fs'), zlib = require('zlib'), app = express(); app.post('/', function (req, res) { var writeStream = fs.createWriteStream('C://myFolder', {flags: 'w'}); req.pipe(zlib.createInflate()).pipe(writeStream); }); var server = app.listen(3000, function () { console.log("Running on port" + 3000) } )
Dans l'en-tête de poste, j'ai ajouté ce qui suit
content-Type ----> application/zip
Comment puis-je résoudre ce problème et enregistrer le zip? Il existe d'autres bibliothèques recommandées (zlib) pour obtenir un extrait et enregistrer un zip?
zlib
est destiné à extraire les données gzipées ou dégonflées, et non les fichiers .ZIP.
Vous pouvez utiliser le module node-unzip
pour ceux-ci:
var unzip = require('unzip'); ... app.post('/', function(req, res) { var extractor = unzip.Extract({ path : 'C://myFolder' }).on('close', function() { res.sendStatus(200); }).on('error', function(err) { res.sendStatus(500); }); req.pipe(extractor); });
Si Postman ne peut pas gérer les téléchargements comme celui-ci (comme suggéré dans les commentaires), vous pouvez tester à l'aide de cURL:
$ curl -XPOST localhost:3000 --data-binary @test.zip