# API de téléversement

> L'API de téléversement gère la réception, la validation et le stockage des fichiers envoyés vers WordPress, qu'il s'agisse d'un ajout manuel dans la médiathèque ou d'un import programmatique.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/api-de-televersement/

Recevoir un fichier envoyé depuis un formulaire ou l'écran d'ajout de média impose une série de vérifications avant de le laisser atterrir sur le serveur : type de fichier autorisé, taille, nom de fichier sécurisé, organisation dans les bons dossiers par année et par mois. WordPress ne laisse pas chaque extension réinventer cette logique : la fonction `wp_handle_upload()` et, plus haut niveau, `media_handle_upload()`, centralisent ce traitement pour tout code qui a besoin de recevoir un fichier.

## Fonctionnement dans WordPress

Une fois le fichier validé et déplacé dans le dossier d'envois (`wp-content/uploads`), une entrée est créée dans la médiathèque via `wp_insert_attachment()`, puis les métadonnées de l'image (dimensions, tailles intermédiaires générées automatiquement) sont calculées par `wp_generate_attachment_metadata()`. Une extension qui construit son propre formulaire d'envoi, par exemple pour un espace membre, réutilise généralement cette même chaîne de fonctions plutôt que de manipuler le système de fichiers directement.

## Exemple

```
if ( ! empty( $_FILES['fichier'] ) ) {
  $resultat = wp_handle_upload( $_FILES['fichier'], [ 'test_form' => false ] );
  if ( ! isset( $resultat['error'] ) ) {
    echo esc_url( $resultat['url'] );
  }
}
```

## Pièges fréquents

- Les types de fichiers acceptés sont restreints par une liste blanche filtrable via `upload_mimes` ; ajouter un nouveau format (comme SVG) exige de le déclarer explicitement, avec les précautions de sécurité qui s'imposent.
- La taille maximale d'envoi dépend aussi des réglages serveur PHP (`upload_max_filesize`, `post_max_size`), qui peuvent limiter les fichiers avant même que WordPress n'intervienne.
