File

L’interface File fournit des informations sur des fichiers et permet au code JavaScript d’une une page web d’accéder à leurs contenus.

Les objets File sont généralements obtenus à partir de :

  • l’objet FileList retourné lorsque qu’un utilisateur ou une utilisatrice sélectionne des fichiers grâce à un élément <input> ;
  • l’objet DataTransfer d’une opération de glisser-déposer ;
  • l’API mozGetAsFile() de l’élément HTMLCanvasElement.

Dans Gecko, le code privilégié peut créer des objets File représentant tout fichier local sans nécessiter une interaction de l’utilisateur ou de l’utilisatrice (voir Notes d’implémentation pour plus d’informations.)

Un objet File est un genre spécifique de Blob, et peut être utilisé dans tout contexte où un blob peut l’être. En particulier, FileReader, URL.createObjectURL(), createImageBitmap(), et XMLHttpRequest.send() acceptent indifféremment des Blobs et des Files.

Voir Utiliser des fichiers à partir d'applications web pour plus d’informations et des exemples.

Constructeur

File()
Renvoie un File nouvellement construit.

Propriétés

File.lastModified Lecture seule
Renvoie le temps de dernière modification du fichier, exprimé en millisecondes écoulées depuis l’ère UNIX (1er janvier 1970 à minuit).
File.lastModifiedDate Lecture seule
Renvoie la Date de dernière modification du fichier.
File.name Lecture seule
Renvoie le nom du fichier.
File.webkitRelativePath Lecture seule
Renvoie le chemin auquel l’URL du File est relative.

File implémente Blob, et ainsi possède les propriétés suivantes :

File.size Lecture seule
Renvoie la taille du fichier en octets.
File.type Lecture seule
Renvoie le type MIMEdu fichier.

Méthodes

L’interface File ne définit aucune méthode, mais hérite des méthodes de l’interface Blob :

Blob.slice([start[, end[, contentType]]])
Renvoie un nouvel objet Blob contenant les données du blob source comprises dans l’intervalle d’octets spécifié.
Blob.stream()
Transforme le File en un ReadableStream pouvant être utilisé pour lire le contenu du File.
Blob.text()
Transforme le File en un flux (stream) et le lit en entier. Renvoie une promesse qui se résoud en une USVString (texte).
Blob.arrayBuffer()
Transforme le File en un flux (stream) et le lit en entier. Retourne une promesse qui se résoud en un ArrayBuffer.

Spécifications

Spécification Statut Commentaire
File API Version de travail Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
FileChrome Support complet 13Edge Support complet OuiFirefox Support complet 7
Support complet 7
Aucun support 3 — 7
Notes
Notes Non-standard implementation.
IE Support complet 10Opera Support complet 11.5Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet 7
Support complet 7
Aucun support 4 — 7
Notes
Notes Non-standard implementation.
Opera Android Support complet 11.5Safari iOS Support complet 6Samsung Internet Android Support complet Oui
File() constructorChrome Support complet 13Edge Aucun support NonFirefox Support complet 7IE Aucun support NonOpera Support complet 11.5Safari Support complet 10.1WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet 7Opera Android Aucun support NonSafari iOS Support complet 6Samsung Internet Android Support complet Oui
lastModifiedChrome Support complet 13Edge Support complet 18Firefox Support complet 15IE Aucun support NonOpera Support complet 16Safari Aucun support NonWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Support complet Oui
lastModifiedDate
ObsolèteNon-standard
Chrome Support complet 13Edge Support complet 12Firefox Aucun support 15 — 61IE Support complet 10Opera Support complet 16Safari Aucun support NonWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Support complet Oui
nameChrome Support complet 13Edge Support complet 12Firefox Support complet 3.6IE Support complet 10Opera Support complet 16Safari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Support complet Oui
typeChrome Support complet 13Edge Support complet OuiFirefox Support complet 3.6IE Support complet 10Opera Support complet 16Safari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Support complet Oui
webkitRelativePathChrome Support complet 13
Préfixée
Support complet 13
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Edge Support complet 13Firefox Support complet 49IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Support complet OuiChrome Android Support complet 18
Préfixée
Support complet 18
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Firefox Android Support complet 49Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android ?

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.

Notes d’implémentation

  • Dans Gecko, vous pouvez utiliser API depuis du code chrome. Voir Using the DOM File API in chrome code pour plus de détails. Pour l’utiliser depuis du code chrome, JSM, ou portée Bootstrap, vous devez l’importer en utilisant Cu.importGlobalProperties(['File']);
  • À partir de Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), le code privilégié (par exemple au sein d’une extension) peut passer un objet nsIFile au constructeur DOM File pour spécifier le fichier à référencer.
  • À partir de Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5), vous pouvez utiliser new File pour créer des objets File depuis des composants XPCOM au lieu de devoir instancier les objets nsIDOMFile directement. Contrairement à Blob, le constructeur prend le nom de fichier comme second argument. Le nom de fichier peut être une chaîne quelconque.
    new File(
      Array parts,
      String filename,
      BlobPropertyBag properties
    );
  • Les propriétés et méthodes non standard suivantes ont été retirées de Gecko 7 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) : File.fileName, File.fileSize, File.getAsBinary(), File.getAsDataURL(), File.getAsText(string encoding) (bug 661876). Les propriétés standard File.name, Blob.size, et les méthodes de FileReader devraient être utilisées à la place.

Voir aussi