Attribut HTML : accept
======================

L'attribut **`accept`** prend comme valeur une liste séparée par des virgules d'un ou plusieurs types de fichiers, ou d'une spécification de type de fichier unique, décrivant les types de fichiers à autoriser. La propriété `accept` est un attribut pour les éléments `<input>` de type `file`. Elle était prise en charge par l'élément `<form>`, mais a été supprimée au profit de `file` dans HTML5.

Comme un type de fichier donné peut être identifié de plusieurs manières, il est utile de fournir un ensemble complet de spécificateurs de type lorsque vous avez besoin de fichiers d'un type spécifique, ou d'utiliser le joker pour indiquer qu'un type de n'importe quel format est accepté.

Par exemple, il existe un certain nombre de façons d'identifier les fichiers Microsoft Word, de sorte qu'un site qui accepte les fichiers Word pourrait utiliser un `<input>` comme celui-ci :


```html
<input
 type="file"
 id="docpicker"
 accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
```


En revanche, si vous acceptez un fichier multimédia, vous pouvez inclure tout format de ce type de média :


```html
<input type="file" id="soundFile" accept="audio/\*" />
<input type="file" id="videoFile" accept="video/\*" />
<input type="file" id="imageFile" accept="image/\*" />
```


L'attribut `accept` ne valide pas les types de fichiers sélectionnés ; il fournit des indications aux navigateurs pour guider les utilisateurs vers la sélection des bons types de fichiers. Il est toujours possible (dans la plupart des cas) pour les utilisateurs de basculer une option dans le sélecteur de fichiers qui permet de passer outre et de sélectionner le fichier de leur choix, puis de choisir des types de fichiers incorrects.

Pour cette raison, vous devez vous assurer que les exigences attendues sont validées côté serveur.

Exemples
--------

Lorsque cet attribut est utilisé sur un champ permettant de sélectionner un fichier, le sélecteur de fichier natif qui s'ouvre devrait filtrer sur les seuls fichiers qui correspondent au(x) type(s) indiqués. La plupart des systèmes d'exploitation masquent ou grisent alors les fichiers qui ne correspondent pas et ne peuvent pas être sélectionnés.


```html
<p>
  <label for="soundFile">Sélectionnez un fichier audio :</label>
  <input type="file" id="soundFile" accept="audio/\*" />
</p>
<p>
  <label for="videoFile">Sélectionnez un fichier vidéo :</label>
  <input type="file" id="videoFile" accept="video/\*" />
</p>
<p>
  <label for="imageFile">Sélectionner des images :</label>
  <input type="file" id="imageFile" accept="image/\*" multiple />
</p>
```


Notez que le dernier exemple vous permet de sélectionner plusieurs images. Voir l'attribut `multiple` pour plus d'informations.

Spécification de type de fichier unique
---------------------------------------

Un **spécificateur de type de fichier unique** est une chaîne qui décrit un type de fichier pouvant être sélectionné par l'utilisateur dans un élément `<input>` de type `file`. Chaque spécificateur unique de type de fichier peut prendre l'une des formes suivantes :

* Une extension de nom de fichier valide et insensible à la casse, commençant par un caractère point (« . »). Par exemple : `.jpg`, `.pdf`, ou `.doc`.
* Une chaîne de type MIME valide, sans extension.
* La chaîne de caractères `audio/*` signifiant "tout fichier audio".
* La chaîne de caractères `vidéo/*` signifiant "tout fichier vidéo".
* La chaîne de caractères `image/*` signifiant "tout fichier image".

L'attribut `accept` prend comme valeur une chaîne de caractères contenant une ou plusieurs de ces spécificateurs de type de fichier unique, séparées par des virgules. Par exemple, un sélecteur de fichiers qui a besoin d'un contenu pouvant être présenté comme une image, y compris les formats d'image standard et les fichiers PDF, pourrait ressembler à ceci :


```html
<input type="file" accept="image/\*,.pdf" />
```

Utilisation des champs pour saisir des fichiers
-----------------------------------------------

### Un exemple de base


```html
<form method="post" enctype="multipart/form-data">
  <div>
    <label for="file">Choisissez le fichier à téléverser</label>
    <input type="file" id="file" name="file" multiple />
  </div>
  <div>
    <button>Soumettre</button>
  </div>
</form>
```



```css
div {
  margin-bottom: 10px;
}
```


Cela produit le résultat suivant :

**Note :** Vous pouvez trouver cet exemple sur GitHub également - voir le code source, et aussi le fonctionnement en direct.

Quel que soit le dispositif ou le système d'exploitation de l'utilisateur, l'entrée de fichier fournit un bouton qui ouvre une boîte de dialogue de sélection de fichier permettant à l'utilisateur de choisir un fichier.

L'inclusion de l'attribut `multiple`, comme indiqué ci-dessus, spécifie que plusieurs fichiers peuvent être choisis en même temps. L'utilisateur peut choisir plusieurs fichiers dans le sélecteur de fichiers de n'importe quelle manière permise par la plateforme qu'il a choisie (par exemple, en maintenant la touche `Maj` ou `Ctrl`, puis en cliquant). Si vous souhaitez que l'utilisateur ne choisisse qu'un seul fichier par `<input>`, omettez l'attribut `multiple`.

### Restreindre les types de fichier acceptés

Souvent, vous ne voudrez pas que l'utilisateur puisse choisir n'importe quel type de fichier arbitraire ; au contraire, vous voudrez souvent qu'il sélectionne des fichiers d'un ou plusieurs types spécifiques. Par exemple, si votre entrée de fichier permet aux utilisateurs de télécharger une photo de profil, vous voulez probablement qu'ils sélectionnent des formats d'image compatibles avec le Web, tels que JPEG ou PNG.

Les types de fichiers acceptables peuvent être spécifiés avec l'attribut `accept`, qui prend une liste d'extensions de fichiers ou de types MIME autorisés séparés par des virgules. Quelques exemples :

* `accept="image/png"` ou `accept=".png"` — Accepter les fichiers PNG.
* `accept="image/png, image/jpeg"` ou `accept=".png, .jpg, .jpeg"` — Accepter les fichiers PNG ou JPEG.
* `accept="image/*"` — Accepter tout fichier ayant un type MIME `image/*`. (De nombreux appareils mobiles permettent également à l'utilisateur de prendre une photo avec l'appareil photo lorsque cette option est utilisée).
* `accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"` — Accepter tout ce qui ressemble à un document MS Word.

Examinons un exemple plus complet :


```html
<form method="post" enctype="multipart/form-data">
  <div>
    <label for="profile\_pic">Choisissez le fichier à téléverser</label>
    <input
 type="file"
 id="profile\_pic"
 name="profile\_pic"
 accept=".jpg, .jpeg, .png" />
  </div>
  <div>
    <button>Soumettre</button>
  </div>
</form>
```


```
div {
  margin-bottom: 10px;
}
```

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

| Specification |
| --- |
| HTML Standard # attr-input-accept |

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

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

Voir aussi
----------

* Utiliser des fichiers à partir d'applications web
* L'API File