JSZip è una libreria JavaScript che consente di creare, leggere ed editare file .zip tramite un'API dedicata alla gestione degli archivi compressi. Si tratta di una soluzione Open Source a doppia licenza (MIT e GPLv3). È disponibile la compatibilità con tutte le versioni più recenti dei browser Web maggiormente utilizzati e può essere impiegato anche in un ambiente basato su Node.JS.
Installazione e istanza della libreria
La libreria può essere installata manualmente dopo aver scaricato il package dal repository ufficiale su GitHub. Una volta effettuato il download è possibile includere nella propria applicazione il file dist/jszip.js
o la sua versione minificata dist/jszip.min.js
.
Diversamente è possibile ricorrere a npm, bower o component. Scegliendo ad esempio la prima opzione il semplice comando da utilizzare è il seguente:
npm install jszip
Un'istanza di JSZip è la rappresentazione di un set di file. Questi ultimi possono essere aggiunti, rimossi o aggiornati. Si può anche importare un file .zip
preesistente o generarne uno da zero. Se si utilizza un loader AMD come RequireJS, su browser la libreria verrà registrata automaticamente. In assenza del loader JSZip dichiarerà un'omonima variabile nel global scope.
Su Node.JS, invece, si procede con require
:
var JSZip = require("jszip");
In ogni caso l'istanza viene generata tramite:
var zip = new JSZip();
Utilizzare JSZip nei propri progetti
Un semplice esempio di utilizzo della libreria nei propri progetti potrebbe essere il seguente:
var zip = new JSZip();
zip.file("Bart.txt", "Ciucciati il calzino\n");
var img = zip.folder("immagini");
img.file("homer.gif", imgData, {base64: true});
zip.generateAsync({type:"blob"})
.then(function(content) {
saveAs(content, "archivio.zip");
});
Eseguendo il codice verrà creato un file .zip
chiamato archivio.zip
contenente due file: un .txt
chiamato Bart.txt
nel quale è stata inserita la frase "Ciucciati il calzino" e un'immagine .gif
chiamata homer.gif
. Quest'ultima sarà contenuta nella cartella immagini
.
Nell'utilizzare JSZip è bene tenere presente che la libreria non supporta tutte le funzionalità che generalmente sono associate ad un archivio .zip
. È possibile gestire un qualsiasi file .zip
ma non quelli criptati e multi-volume.