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
- Primero descargamos la librería zip.js de aquí éstos son los ficheros que nos interesan.
inflate.js(comprimir), deflate.js (descomprimir) -
// 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 } });
- 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.
Apasionado, geek, ingeniero de locuras y absolutamente convencido de nada