File
====

L'interface **`File`** fournit des informations sur des fichiers et permet au code JavaScript d'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()` (en-US), et `XMLHttpRequest.send()` acceptent indifféremment des `Blob`s et des `File`s.

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

Blob

FileConstructeur
------------

`File()` (en-US)

Renvoie un `File` nouvellement construit.

Propriétés
----------

`File.lastModified` (en-US) 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` (en-US) Lecture seule  
Obsolète

Renvoie la `Date` de dernière modification du fichier.

`File.name` Lecture seule 

Renvoie le nom du fichier.

`File.webkitRelativePath` (en-US) Lecture seule  
Non-standard

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` (en-US) Lecture seule 

Renvoie la taille du fichier en octets.

`File.type` (en-US) 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]]])` (en-US)

Renvoie un nouvel objet `Blob` contenant les données du blob source comprises dans l'intervalle d'octets spécifié.

`Blob.stream()` (en-US)

Transforme le `File` en un `ReadableStream` (en-US) pouvant être utilisé pour lire le contenu du `File`.

`Blob.text()` (en-US)

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()` (en-US)

Transforme le `File` en un flux (*stream*) et le lit en entier. Retourne une `promesse` qui se résoud en un `ArrayBuffer`.

Spécifications
--------------

| Specification |
| --- |
| File API # file-section |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### 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, 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, 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 : `File.fileName`, `File.fileSize`, `File.getAsBinary()`, `File.getAsDataURL()`, `File.getAsText(string encoding)` (bug Firefox 661876). Les propriétés standard `File.name`, `Blob.size`, et les méthodes de `FileReader` devraient être utilisées à la place.
Voir aussi
----------

* Utiliser des fichiers à partir d'applications web
* `FileReader`
* Using the DOM File API in chrome code (pour du code privilégié s'exécutant dans Gecko, tel que des extensions de Firefox)