Façon la plus simple de télécharger et décompressez les fichiers dans Node.js croix-plate-forme?
Tout simplement à la recherche d'une solution simple pour le téléchargement et la décompression .zip
ou .tar.gz
fichiers dans Node.js sur n'importe quel système d'exploitation.
Ne sais pas si c'est intégré ou je dois utiliser une autre bibliothèque. Des idées? À la recherche pour juste un couple de lignes de code, donc quand le prochain fichier zip que je veux télécharger de nœud, c'est une évidence. Se sentir comme ce devrait être facile et/ou intégrée, mais je ne peux pas trouver quoi que ce soit. Merci!
Vous devez vous connecter pour publier un commentaire.
Caisse adm-zip.
ADM-ZIP est un pur JavaScript mise en œuvre zip pour la compression de données pour NodeJS.
unzip
fichier à côté serveur aussi avec ce module?2857964996
jeterRangeError [ERR_INVALID_OPT_VALUE]: The value "2857964996" is invalid for option "size"
C'est 2017 (le 26 octobre, pour être exact).
Pour une ancienne et où la technologie est omniprésente comme décompressez-je en droit d'attendre, il existe une assez populaire, mature node.js décompressez bibliothèque qui est de "stagnation" et "non-maintenu parce qu'il est" complet".
Cependant, la plupart des bibliothèques l'impression d'être complètement terribles ou d'avoir commet récemment que il ya seulement quelques mois. C'est tout à fait relatif... donc je suis passé par plusieurs décompressez les bibliothèques, lire leurs docs, et j'ai essayé de leur des exemples pour essayer de comprendre WTF. Par exemple, j'ai essayé ces:
yauzl
node-stream-zip
node-unzipper
node-décompressez
jszip
zip
Première Recommandation:
yauzl
Fonctionne très bien pour tout fichier téléchargé. Pas aussi grand pour le streaming.
Bien documenté. Fonctionne bien. Du sens.
2e Choix:
node-stream-zip
antelle de
node-stream-zip
semble être la meilleureInstaller:
Utilisation:
Avertissement De Sécurité:
Ne sais pas si cela vérifie
entry.name
pour malveillante chemins qui permettrait de résoudre de manière incorrecte (comme../../../foo
ou/etc/passwd
).Vous pouvez facilement vérifier cela par vous-même en comparant
/\.\./.test(path.relative('./to/dir', path.resolve('./to/dir', entry.name)))
.Pros: (Pourquoi dois-je pense que c'est le meilleur?)
Contre:
zip.extract()
ne semble pas fonctionner (j'ai donc utilisézip.stream()
dans mon exemple)Finaliste: nœud-unzipper
Installer:
Utilisation:
Pros:
node-stream-zip
, mais moins de contrôleunzip
Contre:
.zip
dans un lieu donné?Nœud a la prise en charge intégrée pour gzip et deflate par l' zlib module:
Edit: Vous pouvez même
pipe
les données directement, par exemple par laGunzip
(à l'aide de demande):Pour des archives tar, il est Isaacs tar module, qui est utilisé par npm.
Edit 2: mise à Jour de la réponse que
zlib
ne prend pas en charge lazip
format. Cela ne fonctionne que pourgzip
.yauzl est une bibliothèque robuste pour la décompression. Principes de conception:
A actuellement 97% de couverture de test.
J'ai essayé quelques-uns des nodejs décompressez les bibliothèques, y compris adm-zip et décompressez-le, puis s'installa sur extrait-zip qui est un wrapper autour de yauzl. Semblait le plus simple à mettre en œuvre.
https://www.npmjs.com/package/extract-zip
J'ai été impatient un long moment, ne trouvant pas de travail simple exemple, mais sur la base de ces réponses, j'ai créé le
downloadAndUnzip()
fonction.L'utilisation est assez simple:
Et voici la déclaration:
J'ai trouvé le succès avec la suite, travaille avec .zip
(Simplifiée ici pour l'affichage: pas de vérification des erreurs, & il suffit de se décompresse tous les fichiers du dossier actuel)
Un autre exemple de travail:
Vous pouvez simplement extraire le zip de fichiers à l'aide de "décompresser". Il va travailler pour toute la taille de vos fichiers et vous devez l'ajouter en tant que dépendance de npm.
JS:
unzip
est et si c'est intégré dans le package ou vous oblige à npm l'installer.