Arbeiten mit ZIP/Archiven in Node.js: Die Bibliothek Adm-Zip

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bibliothek Adm-Zip für die Arbeit mit ZIP-Archiven in Node.js

Bei der Entwicklung von Webanwendungen, Server-Dienstprogrammen oder Tools zur Datenverarbeitung auf Node.js entsteht häufig die Notwendigkeit, mit ZIP-Archiven zu arbeiten: Dateien vor dem Senden an den Benutzer packen, erhaltene Archive entpacken oder den Inhalt ohne vollständiges Entpacken manipulieren. Im JavaScript-Ökosystem gibt es für diese Aufgaben mehrere Bibliotheken, und eine der beliebtesten und einfachsten zu verwendenden ist Adm-Zip.



Was ist Adm-Zip?

Adm-Zip ist eine reine JavaScript-Bibliothek für Node.js, die es ermöglicht, ZIP-Archive ohne externe Abhängigkeiten (z. B. ohne Installation des Dienstprogramms zip oder unzip im System) zu erstellen, zu lesen und zu ändern. Sie arbeitet sowohl mit Dateien auf der Festplatte als auch mit Puffern im Speicher, was sie ideal für Webserver und Cloud-Funktionen macht.



Die Hauptfunktionen der Bibliothek:

  • Erstellen neuer ZIP-Archive aus Dateien, Ordnern oder Zeichenfolgendaten.
  • Entpacken von Archiven mit Extraktion in ein angegebenes Verzeichnis oder in einen Puffer.
  • Lesen des Archivinhalts ohne vollständiges Entpacken (Anzeigen der Dateiliste, Lesen einzelner Einträge).
  • Hinzufügen, Löschen und Aktualisieren von Dateien innerhalb eines bereits vorhandenen Archivs.
  • Arbeiten mit Kommentaren zum Archiv und zu einzelnen Dateien.
  • Unterstützung von Passwörtern (ZipCrypto-Verschlüsselung).
  • Arbeiten mit Streams zur Verarbeitung großer Datenmengen.


Installation

Die Installation der Bibliothek ist für npm-Pakete Standard:

npm install adm-zip


Nach der Installation können Sie sie in Ihr Projekt einbinden:

const AdmZip = require('adm-zip');


Erstellen eines ZIP-Archivs

Ein neues Archiv zu erstellen ist sehr einfach. Sie können sowohl einzelne Dateien als auch ganze Ordner hinzufügen.



const AdmZip = require('adm-zip');

// Erstellen einer neuen Archivinstanzconst zip = new AdmZip();

// Hinzufügen einer Datei aus einem Stringzip.addFile('hello.txt', Buffer.from('Hello, World!', 'utf8'));

// Hinzufügen einer Datei von der Festplattezip.addLocalFile('/path/to/image.jpg');

// Hinzufügen des Inhalts eines lokalen Ordnerszip.addLocalFolder('/path/to/documents', 'backup/docs');

// Archiv auf die Festplatte schreibenzip.writeZip('myarchive.zip');

console.log('Archiv erstellt: myarchive.zip');


Sie können das Archiv auch als Puffer zum Senden über eine HTTP-Antwort erhalten:

const zipBuffer = zip.toBuffer();// Jetzt kann zipBuffer als Binärdatei an den Benutzer gesendet werden


Entpacken eines ZIP-Archivs

Das Entpacken erfolgt in wenigen Zeilen. Die Bibliothek unterstützt sowohl das Extrahieren aller Dateien als auch das Lesen einzelner Einträge.



const AdmZip = require('adm-zip');

try { // Öffnen eines vorhandenen Archivs const zip = new AdmZip('myarchive.zip');

// Alle Dateien in den angegebenen Ordner extrahieren zip.extractAllTo('extracted/', true); // true — vorhandene Dateien überschreiben

console.log('Archiv in den Ordner extracted/ entpackt');} catch (err) { console.error('Fehler beim Entpacken:', err.message);}


Wenn Sie den Inhalt des Archivs ohne Entpacken lesen müssen:

const zip = new AdmZip('myarchive.zip');

// Array der Einträge (Dateien und Ordner) abrufenconst zipEntries = zip.getEntries();

zipEntries.forEach(entry => { if (!entry.isDirectory) { console.log(`Datei: ${entry.entryName}, Größe: ${entry.header.size} Bytes`); // Inhalt der Datei als String lesen const content = entry.getData().toString('utf8'); console.log('Inhalt:', content.substring(0, 100)); }});


Arbeiten mit Passwörtern (Verschlüsselung)

Adm-Zip unterstützt die ZipCrypto-Verschlüsselung. Beachten Sie: Dies ist nicht die modernste Methode (AES wird nicht unterstützt), aber für den Basisschutz ist sie geeignet.



<

Empfehlungen