Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Saya Boleh Nyahzip Fail Secara Asynchronous dalam Pelayar Web Menggunakan JavaScript?

Bagaimanakah Saya Boleh Nyahzip Fail Secara Asynchronous dalam Pelayar Web Menggunakan JavaScript?

DDD
DDDasal
2024-11-02 12:48:02796semak imbas

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

Menyahzip Fail Secara Asynchronous dalam Penyemak Imbas Web

Menyahzip Fail Berzip untuk Paparan dalam Pelayar Web

Untuk memaparkan fail OpenOffice (.odt dan .odp ) dalam pelayar web, seseorang perlu menyahzipnya terlebih dahulu. Walaupun inflate.js mungkin tidak mencukupi untuk tugas ini, terdapat penyelesaian JavaScript yang mantap untuk menyahzip fail ZIP secara tidak segerak.

JavaScript Unzipper

A JavaScript unzipper telah dibangunkan, menggabungkan elemen daripada Andy G.P. Pembaca fail binari Na dan logik tiup RFC1951 Notmasteryet. Kelas ZipFile mengendalikan fungsi teras.

Pelaksanaan dalam JavaScript

Kod JavaScript berikut menunjukkan penggunaan nyahzip:

// 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});
    });
}

Had

Walaupun nyahzip JavaScript memenuhi tujuannya, ia menghadapi had tertentu:

  • Prestasi: Penyahmampatan boleh menjadi perlahan berbanding dengan atur cara yang disusun, terutamanya dengan fail ZIP yang besar.
  • Penggunaan Memori: Nyahzip membaca keseluruhan ZIP ke dalam memori, yang boleh menegangkan sumber sistem dengan fail besar.
  • Fungsi Terhad: Ia tidak menyokong semua ciri ZIP , seperti penyulitan, Zip64 dan nama fail yang dikodkan UTF-8.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Nyahzip Fail Secara Asynchronous dalam Pelayar Web Menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn