2010-06-09 3 views

Répondre

2

JavaScript n'a pas accès à cette information. En général, JavaScript dans les navigateurs Web est limité à simplement interagir avec le DOM.

Vous pouvez être en mesure de faire quelque chose sur le côté serveur qui enregistre le début du flux de téléchargement, mais comme @Pointy and @Marcel noted in comments to another answer, cela pourrait être assez difficile. Dans un tel cas, vous pourrez alors demander au serveur cette information en utilisant AJAX, ou long polling, etc., en temps quasi réel.

+2

Il est possible d'avoir une bonne idée que le téléchargement a * commencé *, mais vous avez raison de dire que vous ne savez pas si l'utilisateur l'a accepté. – Pointy

0

Vous devrez le faire indirectement en vérifiant le fichier journal du serveur Web via un appel AJAX. Cela vous obligera à écrire du code côté serveur (et vous devez avoir accès aux fichiers journaux).

Il existe une deuxième façon de le faire, c'est de diffuser le fichier via un programme côté serveur. De cette façon, vous pouvez définir un indicateur lorsque le fichier a commencé à diffuser et récupérer ce drapeau via un appel AJAX.

+1

Il y a un défaut majeur dans le premier cas: au moins dans Firefox le téléchargement commence dès que je clique sur un lien. Pendant le temps que je sélectionne un endroit pour enregistrer ce fichier, il aurait pu être (entièrement) téléchargé avant que j'appuie sur le bouton Annuler. –

+4

Le problème est que le fichier commencera à diffuser au tout début de la réponse HTTP. Le navigateur affiche la boîte de dialogue "Que faire avec le fichier" * après que les octets aient déjà commencé à arriver. En raison de la mise en tampon tout au long du chemin du serveur au client, une grande partie du fichier peut être expédiée même si l'utilisateur choisit de ne pas enregistrer le fichier. – Pointy

+0

@Marcel Ce n'est pas quelque chose de déterminé par le navigateur. Le serveur répond à la requête HTTP avec les octets réels du fichier de téléchargement. Il n'y a pas d'autre communication avec * n'importe quel navigateur pour la décision "sauvegarder/ne pas enregistrer". – Pointy

Questions connexes