Abrir ficheros zip en Windows 8 Modern UI ( Metro )

Hoy vamos a ver cómo abrir un fichero javascript, mediante un filepicker (selector de ficheros), en aplicaciones javascript para Windows 8, y procesar los ficheros individualmente uno a uno.

Pasos

  1. Primero descargamos la librería zip.js de aquí éstos son los ficheros que nos interesan.ficheros zip js
    inflate.js(comprimir),  deflate.js (descomprimir)
  2. // Creamos el objeto picker, con las opciones deseadas
        var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
        openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.list;
        openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;
        //Establecemos los formatos que queremos capturar
        openPicker.fileTypeFilter.replaceAll([".zip", ".ZIP"]);
    
        // pickSingleFilesAsync si solo queremos uno
        openPicker.pickMultipleFilesAsync().then(function (file) {
            if(file.size >0){
                for (var i = 0; i < file.size; i++) {
                    //imaginemos que contiene ficheros de texto                
                    file[i].openReadAsync().then(function (stream) {
                        if (myFile) {
                            //Creamos un blob del archivo zip
                            var blob = MSApp.createBlobFromRandomAccessStream(myFile.contentType, stream);
    
                            //Para blob
                            zip.createReader(new zip.BlobReader(blob), function (reader) {
                                // Obtenemos los ficheros
                                reader.getEntries(function (entries) {   
                                    //Accedemos a cada fichero									
                                    entries.forEach(function (item) {
                                        item.getData(new zip.TextWriter(), function (data) {
                                            //"data" contiene el texto del fichero
                                        });
    
                                    });                                        
    
                                });
    
                            }, function (error) {
                                // Error callback
                            });
    
                        }
                    });
    
                }
            } else {
                //Se ha presionado cancelar
            }
        });
  3. Como vemos, de ésta forma tan sencilla, podremos abrir ficheros zip con zip.js y winJS.

Notas

Esto es aplicable a ficheros de texto (dentro del zip), con codificación UTF-8, pronto veremos cómo trabajar con otras codificaciones cómo ISO 5598-1 , ISO 5598-15 etc.

Nota sabionda:

Sustituyendo

 zip.createReader(new zip.BlobReader(blob), function (reader) {

por

zip.createReader(new zip.HttpRangeReader(url), function (reader) {

podremos acceder a ficheros alojados en un website.

 

Deja un comentario