Maison > interface Web > js tutoriel > Comment puis-je décompresser des fichiers de manière asynchrone dans un navigateur Web à l'aide de JavaScript ?

Comment puis-je décompresser des fichiers de manière asynchrone dans un navigateur Web à l'aide de JavaScript ?

DDD
Libérer: 2024-11-02 12:48:02
original
896 Les gens l'ont consulté

How Can I Unzip Files Asynchronously in a Web Browser Using JavaScript?

Décompresser des fichiers de manière asynchrone dans un navigateur Web

Décompresser des fichiers compressés pour les afficher dans un navigateur Web

Pour afficher les fichiers OpenOffice (.odt et .odp ) dans un navigateur Web, il faut d'abord les décompresser. Bien que inflate.js ne suffise pas pour cette tâche, il existe une solution JavaScript robuste pour décompresser les fichiers ZIP de manière asynchrone.

JavaScript Unzipper

Un décompresseur JavaScript a été développé, incorporant des éléments d'Andy G.P. Le lecteur de fichiers binaires de Na et la logique de gonflage RFC1951 de Notmasteryet. La classe ZipFile gère les fonctionnalités de base.

Implémentation en JavaScript

Le code JavaScript suivant illustre l'utilisation du décompresseur :

// Instantiate a ZipFile and provide a callback for when the ZIP is read.
zipFile = new ZipFile(url, doneReading);

// The doneReading callback is triggered when the ZIP is read and handles the extraction of entries.
function doneReading(zip) {
    extractEntries(zip);
}

// Extract entries from the ZIP file.
function extractEntries(zip) {
    for (var i = 0; i < zip.entries.length; i++) {
        var entry = zip.entries[i];

        // Create an entry info div.
        var entryInfo = "<h4><a>" + entry.name + "</a></h4>\n<div>";

        // Create a unique ID for the accordion panel and inject the extracted content into it.
        var randomId = "id-" + Math.floor((Math.random() * 1000000000));
        entryInfo += "<span class='inputDiv'><h4>Content:</h4><span id='" + randomId +
            "'></span></span></div>\n";
        $("#report").append(entryInfo);

        // Asynchronously extract the entry and pass a callback.
        entry.extract(extractCb(randomId));
    }
}

// Extract callback function to add the extracted content to an accordion on the page.
function extractCb(id) {
    return (function(entryName, entryText){
        var content = entryText.replace(new RegExp( "\n", "g" ), "<br/>");
        $("#"+id).html(content);
        $('#report').accordion('destroy');
        $('#report').accordion({collapsible:true, active:false});
    });
}
Copier après la connexion

Limitations

Bien que le programme de décompression JavaScript remplisse son objectif, il est confronté à certains limitations :

  • Performances :La décompression peut être lente par rapport aux programmes compilés, en particulier avec les gros fichiers ZIP.
  • Utilisation de la mémoire :Le unzipper lit l'intégralité du ZIP en mémoire, ce qui peut solliciter les ressources du système avec de grandes fichiers.
  • Fonctionnalité limitée : Il ne prend pas en charge toutes les fonctionnalités ZIP, telles que le cryptage, Zip64 et les noms de fichiers codés en UTF-8.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal