Maison >interface Web >js tutoriel >Comment pouvons-nous détecter de manière fiable la fin du téléchargement des fichiers du navigateur sans événements du navigateur ?
Énoncé du problème
Une page comportant un mécanisme de téléchargement de fichiers dynamique nécessite un indicateur visuel pour signaler lorsque le téléchargement est terminé. Cependant, les navigateurs ne déclenchent pas toujours des événements pour indiquer la réception du fichier lorsqu'une boîte de dialogue « Enregistrer » apparaît.
Limites de réponse du serveur
La fourniture d'une « Disposition de contenu : L'en-tête "attachement" demande aux navigateurs d'afficher la boîte de dialogue "Enregistrer", mais il supprime le chargement de l'iframe utilisé pour l'événement surveillance.
Solution proposée
Mettre en œuvre une solution basée sur le client exploitant JavaScript et les cookies côté serveur :
Algorithme client
Algorithme du serveur
Exemple Implémentation
var downloadToken = setFormToken(); var downloadTimer = setInterval(function() { var token = getCookie("fileDownloadToken"); if(token == downloadToken) { unblockSubmit(); } }, 1000);
// Set a cookie to unblock the submit button when download starts $this->setCookieToken("downloadToken", $_GET["downloadToken"]); $result = $this->sendFile();
Avantages
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!