Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

XMLHttpRequest : propriété upload

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

Note : Cette fonctionnalité est disponible via les Web Workers, sauf pour les Service Workers.

La propriété en lecture seule upload de l'interface XMLHttpRequest retourne un objet XMLHttpRequestUpload qui peut être observé pour suivre la progression d'un téléchargement.

C'est un objet opaque, mais comme il s'agit également d'un objet XMLHttpRequestEventTarget, des écouteurs d'évènements peuvent y être attachés pour suivre sa progression.

Note : Attacher des écouteurs d'évènements à cet objet empêche la requête d'être une « requête simple » et entraîner l'émission d'une requête préliminaire si elle est inter-origine ; voir le CORS. Pour cette raison, les écouteurs d'évènements doivent être enregistrés avant d'appeler send() ou les évènements de téléchargement ne sont pas déclenchés.

Note : La spécification semble également indiquer que les écouteurs d'évènements doivent être attachés après open(). Cependant, les navigateurs sont bogués à ce sujet et nécessitent souvent que les écouteurs soient enregistrés avant open() pour fonctionner.

Les évènements suivants peuvent être déclenchés sur un objet de téléchargement et utilisés pour surveiller le téléchargement :

Évènement Description
loadstart Le téléchargement a commencé.
progress Livré périodiquement pour indiquer la quantité de progression réalisée jusqu'à présent.
abort L'opération de téléchargement a été annulée.
error Le téléchargement a échoué en raison d'une erreur.
load Le téléchargement s'est terminé avec succès.
timeout Le téléchargement a expiré parce qu'une réponse n'est pas arrivée dans l'intervalle de temps défini par XMLHttpRequest.timeout.
loadend Le téléchargement est terminé. Cet évènement ne fait pas de distinction entre le succès ou l'échec, et est envoyé à la fin du téléchargement quel que soit le résultat. Avant cet évènement, l'un des load, error, abort ou timeout a déjà été déclenché pour indiquer pourquoi le téléchargement s'est terminé.