Lectura de archivos comprimidos con JavaScript puro-UNCOMPRESS. js

Tiempo de ejecución: 30 minutos. Empezar

Autor: workhorsy
Views Total: 2,266
Sitio oficial: Ir a la web
Actualizado: August 7, 2018
Licencia: MIT

Vista prévia

Lectura de archivos comprimidos con JavaScript puro-UNCOMPRESS. js

Descripción

Uncompress. js es una herramienta de JavaScript que utiliza varias bibliotecas de JavaScript para leer archivos comprimidos e información de archivo de salida en la pantalla. Soporta Zip, rar y tar.

Funcionamiento

Cargue el archivo JavaScript UNCOMPRESS. js y otros recursos necesarios en la página HTML.

<script src="js/polyfill.js"></script>
<script src="js/libunrar.js"></script>
<script src="js/jszip.js"></script>
<script src="js/libuntar.js"></script>
<script src="js/uncompress.js"></script>

Cree una entrada de archivo para importar archivos comprimidos locales.

<input id="fileInput" type="file" required>

Cree un contenedor en el que la biblioteca de JavaScript dará salida a la información del archivo.

<div id="entryList"></div>

El JavaScript.

var entryList = null;

function getFileMimeType(file_name) {

file_name = file_name.toLowerCase();

if (file_name.endsWith('.jpeg') || file_name.endsWith('.jpg')) {


return 'image/jpeg';

} else if (file_name.endsWith('.png')) {


return 'image/png';

} else if (file_name.endsWith('.bmp')) {


return 'image/bmp';

} else if (file_name.endsWith('.gif')) {


return 'image/gif';

} else {


// Uses jpeg as default mime type


return 'image/jpeg';

}
}

function toFriendlySize(size) {

if (size >= 1024000000) {


return (size / 1024000000).toFixed(2) + ' GB';

} else if (size >= 1024000) {


return (size / 1024000).toFixed(2) + ' MB';

} else if (size >= 1024) {


return (size / 1024).toFixed(2) + ' KB';

} else if (size >= 1) {


return (size / 1).toFixed(2) + ' B';

} else if (size === 0) {


return '0 B';

}


return '?';
}

function onEach(archive, i) {

// If this is the last entry, close the archive

if (i >= archive.entries.length) {


archiveClose(archive);


return;

}


// Read the data for this entry

var entry = archive.entries[i];

entry.readData(function(data) {


if (entry.is_file) {



// Convert the data into an Object URL



var blob = new Blob([data], {type: getFileMimeType(entry.name)});



var url = URL.createObjectURL(blob);




// Add a BR to the document



entryList.appendChild(document.createElement('br'));




// Add a link to the Object URL



var a = document.createElement('a');



a.href = url;



a.innerHTML = entry.name + ' (' + toFriendlySize(data.byteLength) + ')';



entryList.appendChild(a);


}



// Schedule the next iteration. Use a timeout so we don't block too long.


setTimeout(function() {



onEach(archive, i + 1);


}, 0);

});
}

window.onload = function() {

entryList = document.getElementById('entryList');


document.getElementById('fileInput').onchange = function() {


// Just return if there is no file selected


var file_input = document.getElementById('fileInput');


if (file_input.files.length === 0) {



entryList.innerHTML = 'No file selected';



return;


}



// Get the file's info


var file = file_input.files[0];


var blob = file.slice();


var file_name = file.name;



// Convert the blob into an array buffer


var reader = new FileReader();


reader.onload = function(evt) {



var array_buffer = reader.result;




// Open the file as an archive



var archive = archiveOpen(file_name, array_buffer);



if (archive) {




console.info('Uncompressing ' + archive.archive_type + ' ...');





// Start iterating over each entry in the archive




entryList.innerHTML = '';




onEach(archive, 0);



} else {




entryList.innerHTML = 'Failed to uncompress file';



}


};


reader.readAsArrayBuffer(blob);

};
};

Registro de cambios

08/07/2018

  • Errores

Te puede interesar: