Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengesan Selesai Muat Turun Fail dalam Penyemak Imbas tanpa Peristiwa 'muatan' yang Konsisten?
Mengesan Selesai Muat Turun Fail dalam Penyemak Imbas
Penjanaan dan muat turun fail dinamik boleh menjadi satu cabaran apabila memberikan maklum balas kepada pengguna. Artikel ini mengkaji senario di mana pelayan menjana fail sebagai tindak balas kepada permintaan, tetapi penyemak imbas tidak memberikan petunjuk yang jelas apabila muat turun selesai.
Masalah: Had Pengesanan Peristiwa
Pengarang mengalami kesukaran mengesan penyiapan muat turun dalam senario mereka di mana fail dijana secara dinamik dan disimpan dalam iframe tersembunyi. Peristiwa "muatan" pada iframe tidak dicetuskan secara konsisten merentas penyemak imbas, membawa kepada penunjuk yang tidak boleh dipercayai.
Penyelesaian Alternatif: Tinjauan Sebelah Pelanggan
Satu penyelesaian melibatkan menggunakan mekanisme pengundian pihak pelanggan dalam JavaScript. Algoritma berfungsi seperti berikut:
Respons Sebelah Pelayan
Kod sebelah pelayan bertindak balas dengan menetapkan kuki dengan nama "fileDownloadToken" apabila permintaan mengandungi nilai token bukan kosong. Kuki ini berfungsi sebagai isyarat kepada kod pihak pelanggan bahawa muat turun telah selesai.
Pelaksanaan Kod
Contoh JavaScript sisi klien:
function blockResubmit() { // ... downloadTimer = window.setInterval(function() { var token = getCookie("fileDownloadToken"); if (token == downloadToken || attempts == 0) { unblockSubmit(); } attempts--; }, 1000); }
Contoh PHP sebelah pelayan:
$TOKEN = "downloadToken"; // Sets a cookie so that when the download begins the browser can // unblock the submit button. $this->setCookieToken($TOKEN, $_GET[$TOKEN], false); $result = $this->sendFile();
Faedah ini Pendekatan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Selesai Muat Turun Fail dalam Penyemak Imbas tanpa Peristiwa 'muatan' yang Konsisten?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!