Creación de archivos Zip con JavaScript

Creación de archivos Zip con JavaScript

Mientras hacemos cosas asombrosas con JavaScript en el lado del servidor, es importante no desviar nuestros ojos de algunas de las grandes cosas que suceden en el lado del cliente. Uno de estos proyectos que recientemente hemos descubierto es JSZip: una biblioteca JavaScript que permite generar fácilmente archivos ZIP desde el front-end. ¿Y por qué es útil? Puedes permitir a los usuarios seleccionar y descargar imágenes desde una galería o casi cualquier otra cosa. Echemos un vistazo a cómo JSZip permite generar archivos Zip estructurados desde el lado del cliente.

Comienza por coger la biblioteca JSZip, que pasa a trabajar en todos los principales navegadores. Una vez que la biblioteca está disponible en la página, generar un archivo Zip es cosa de unas pocas líneas de código:

 

var zip = new JSZip();
 
// Add an top-level, arbitrary text file with contents
zip.file("Hello.txt", "Hello Worldn");
 
// Generate a directory within the Zip file structure
var img = zip.folder("images");
 
// Add a file to the directory, in this case an image with data URI as contents
img.file("smile.gif", imgData, {base64: true});
 
// Generate the zip file asynchronously
zip.generateAsync({type:"blob"})
.then(function(content) {
    // Force down of the Zip file
    saveAs(content, "archive.zip");
});

 

Puedes agregar archivos individuales con nombres y contenidos personalizados, así como directorios arbitrarios. Una vez que has agregado el contenido, JSZip puede generar de forma asíncrona tu archivo Zip y posteriormente puedes activar la descarga.

También puedes cargar y leer archivos Zip:

 

var read_zip = new JSZip();
// Load zip content; you'd use fetch to get the content
read_zip.loadAsync(content)
.then(function(zip) {
    // Read from the zip file!
    read_zip.file("hello.txt").async("string"); // a promise of "Hello Worldn"
});

 

Es de apreciar la simplicidad de JSZip. Existen bibliotecas más avanzadas y complicadas, como zip.js , pero es probable que JSZip cubra la mayoría de los casos de uso. Un gran ejemplo de aprovechamiento de los archivos Zip en el lado del cliente se encuentra en el Service Worker Cookbook: caché de un archivo Zip localmente, extraer su contenido y servirlo dentro de un service worker. Sea cual sea tu caso de uso, debes saber que los archivos Zip pueden ser leídos y generados sin necesidad de un servidor.

Comentarios

Sin comentarios
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: