Gestire file ZIP in Javascript con JSZip

Mattepuffo's logo
Gestire file ZIP in Javascript con JSZip

Gestire file ZIP in Javascript con JSZip

Ho trovato una libreria che permette di manipolare file ZIP in Javascript: JSZip!

E' possibile usarla sia in Node.js che in un browser "classico" (quindi lato client).

Noi vedremo un esempio per il secondo caso.

Ad essere sincero ci ho messo un pò a capirne il funzionamento, in quanto la documentazione non è molto chiara.

La domanda che mi veniva era: senza usare Node.js, come faccio a creare un file sul server?

Ed in effetti non lo crea; quello che fa è creare file e cartelle in memoria, per poi usarle nel caso in cui si voglia scaricare il file compresso o leggerlo.

Questo un esempio funzionante:

<!DOCTYPE html>
<html>
    <head>
        <title>JSZip</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="dist/jszip.min.js"></script>
        <script>
            var zip = new JSZip();
            window.onload = function () {
                var testFile = "test/hello.txt";
                zip.file(testFile, "Hello Worldn");
                zip.file(testFile).async("string").then(function (data) {
                    console.log(data);
                    zip.generateAsync({type: "base64"}).then(function (base64) {
                        location.href = "data:application/zip;base64," + base64;
                    });
                });
            }
        </script>
    </head>
    <body></body>
</html>

Con questo codice scarichiamo dal browser un file ZIP con dentro una cartella (test) ed un file di testo con scritto dentro Hello World.

Nel sito ufficiale ci sono altri esempi, su come creare un form per l'upload, leggere un file, ecc.

Considerando che la libreria ufficiale usata anche da jQuery DataTables, direi che è da tenere in considerazione.

Enjoy!


Condividi

Commentami!