Heim > Web-Frontend > js-Tutorial > Hauptteil

Empfehlungen für einige praktische JavaScript-Dateikomprimierungs- und Dekomprimierungsbibliotheken auf GitHub_Javascript-Kenntnisse

WBOY
Freigeben: 2016-05-16 15:10:49
Original
3388 Leute haben es durchsucht

Der gesamte vorhandene Archiv- und Unarchive-Ordner muss im Projekt verwendet werden. Bei der Suche nach einer Lösung habe ich einige beliebte Bibliotheken ausprobiert, hauptsächlich adm-zip, JSZip, Archiver usw.

1.Verwenden Sie adm-zip
adm-zip unterstützt die Funktion zum Archivieren und Entarchivieren einer oder mehrerer Dateien oder eines gesamten Ordners, was sehr einfach und bequem zu verwenden ist.

  var adm_zip = require('adm-zip');

  //creating archives
  var zip = new adm_zip(); 
  zip.addLocalFolder('archiver'); 
  zip.writeZip('adm/adm-archive.zip'); 

  //extracting archives 
  var unzip = new adm_zip('adm/adm-archive.zip'); 
  unzip.extractAllTo("adm/adm-unarchive/", /*overwrite*/true);

Nach dem Login kopieren

Vor- und Nachteile:
1. Es führt gleichzeitig Komprimierung und Dekomprimierung durch und kann mit vorhandenen Dateien oder Ordnern arbeiten, sofern der Pfad bereitgestellt wird. Es implementiert viele Schnittstellen und ist einfach zu verwenden.
2. Es liegt ein Fehler an sich vor, und manchmal kann die dekomprimierte Datei nicht als Originaldatei wiederhergestellt werden. Hoffentlich werden diese Fehler im Laufe der Zeit behoben.


2. Verwenden SieJSZip
Wenn Sie diese Bibliothek verwenden, müssen Sie Dateien einzeln zum Zip-Objekt hinzufügen, den Inhalt manuell hinzufügen und dann den Dateischreibvorgang verwenden, um das Zip-Objekt im Speicher in physischen Speicher umzuwandeln. Wenn es sich also um einen gesamten Ordner handelt, ist es sehr mühsam und muss den Ordner durchlaufen.

var JSZip = require("jszip");
var fs = require("fs");

var zip = new JSZip();

var file_content = fs.readFileSync('archive/a.txt');


zip.file("a.txt",file_content);

var data = fs.readFileSync("archive/img/pic.jpeg");
zip.file("img/pic.jpeg", data, {base64: true});

var zipfolder = zip.generate({type:"nodebuffer"});

fs.writeFile("jszip.zip", zipfolder, function(err) {
  if (err) throw err;
});

Nach dem Login kopieren

Es gibt auch eine Ordnermethode in JSZip, die jedoch nur zum Wechseln des virtuellen Pfads innerhalb des Zip-Objekts verwendet wird. Beispielsweise dient zip.folder("img").file('a.txt') zum Hinzufügen Erstellen Sie unten ein img-Unterverzeichnis der Datei a.txt. Der Effekt entspricht zip.file("img/a.txt"). Hierbei ist auch zu beachten, dass der Inhalt der Datei manuell hinzugefügt werden muss. Wenn es nur zip.file("a.txt"); ist, wird nur eine TXT-Datei mit leerem Inhalt im Zip-Objekt erstellt im Speicher vorhanden ist, muss es in die Datei geschrieben werden, bevor es tatsächlich auf der Festplatte gespeichert wird.

Vor- und Nachteile:
1. Es eignet sich besser zum Konvertieren einiger in Echtzeit empfangener Daten in ZIP. 2. Es ist umständlich, vorhandene Ordner zu bedienen. Sie müssen den Inhalt einzeln zum Zip-Objekt hinzufügen und ihn dann in Dateien konvertieren.
3. Viel Codierung erfordert Aufmerksamkeit.
4. Nur Komprimierungsfunktion.


3. Verwenden Sie Archiver und Entpacken
Diese Kombination ist die letzte, die ich verwendet habe. Sie ist zuverlässiger und einfacher zu verwenden und unterstützt das ZIP-Format. Sie müssen nur den Pfad zum Komprimieren des vorhandenen Ordners angeben. Komprimierung:

var fs = require('fs');
var archiver = require('archiver');

var output = fs.createWriteStream('archiver-unzip.zip');
var archive = archiver('zip');

archive.on('error', function(err){
  throw err;
});

archive.pipe(output);
archive.bulk([
  { src: ['archiver/**']}
]);
archive.finalize();

Nach dem Login kopieren

Entpacken:

var fs = require("fs");
var unzip = require("unzip");

fs.createReadStream('archiver-unzip.zip').pipe(unzip.Extract({ path: 'unarchive' }));

Nach dem Login kopieren

Vor- und Nachteile:
1. Es wurde schon lange ausprobiert und weist weniger Fehler auf.
2. Einfach zu bedienen, kein Durchsuchen von Ordnern erforderlich.
3. Sie bieten nur Komprimierung oder Dekomprimierung, nicht beide Funktionen. (Adm-zip ist also eigentlich sehr nützlich, aber Fehler sind ein Fehler...)

Dies sind nur einige der Bibliotheken, die ich gestern gefunden habe. Gerne können Sie weitere Bibliotheken empfehlen

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!