Gérer la détection de fin de téléchargement de fichiers
Problème :
Détection lorsqu'un navigateur reçoit entièrement un Le téléchargement de fichiers générés dynamiquement devient crucial lors de l'affichage des indicateurs d'attente. Actuellement, l'utilisation de l'événement « load » d'une iframe ne parvient pas à résoudre ce problème en raison d'incohérences du navigateur.
Solution 1 : vérification des jetons basée sur le navigateur
Un JavaScript côté client la solution implique :
Côté serveur, le algorithme :
Extrait de code ( JavaScript) :
function setFormToken() { var downloadToken = new Date().getTime(); document.getElementById("downloadToken").value = downloadToken; return downloadToken; }
Extrait de code (PHP) :
// Set a cookie to unblock submit button when download begins. $TOKEN = "downloadToken"; $this->setCookieToken($TOKEN, $_GET[$TOKEN]);
Solution 2 : interrogation du serveur
Alternativement, une approche côté serveur implique :
Cette méthode évite de créer des fichiers temporaires sur le serveur. Cependant, cela nécessite une communication client-serveur pendant la période d'attente.
Avantages et inconvénients :
L'utilisation d'un jeton de navigateur permet une détection dynamique, mais peut entraîner des problèmes de compatibilité avec le navigateur. . L'interrogation du serveur est une option plus fiable mais plus lente.
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!