Maison > interface Web > js tutoriel > Comment puis-je détecter de manière fiable la fin du téléchargement d'un fichier dans un navigateur ?

Comment puis-je détecter de manière fiable la fin du téléchargement d'un fichier dans un navigateur ?

Linda Hamilton
Libérer: 2025-01-05 21:06:49
original
461 Les gens l'ont consulté

How Can I Reliably Detect File Download Completion in a Browser?

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 :

  • Générer un jeton unique pour le téléchargement demande.
  • Soumission de la demande avec le jeton.
  • Affichage d'un indicateur "en attente".
  • Réglage d'une minuterie pour vérifier périodiquement un cookie correspondant avec la valeur du jeton.
  • Masquer l'indicateur lors de la recherche du cookie.

Côté serveur, le algorithme :

  • Vérifie le jeton dans la requête.
  • Définit un cookie avec la valeur du jeton s'il est trouvé.

Extrait de code ( JavaScript) :

function setFormToken() {
  var downloadToken = new Date().getTime();
  document.getElementById("downloadToken").value = downloadToken;
  return downloadToken;
}
Copier après la connexion

Extrait de code (PHP) :

// Set a cookie to unblock submit button when download begins.
$TOKEN = "downloadToken";
$this->setCookieToken($TOKEN, $_GET[$TOKEN]);
Copier après la connexion

Solution 2 : interrogation du serveur

Alternativement, une approche côté serveur implique :

  • Lancement de la création du fichier.
  • Interrogation du serveur jusqu'à achèvement.
  • Téléchargement du fichier prêt.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal