
# Champs pièce jointe

La catégorie média couvre les téléversements de fichiers et le champ barcode. `single-attachment` et `multiple-attachments` téléversent des fichiers dans un bucket de stockage ; `barcode` stocke une valeur scannable (documentée en détail sur la page [Champs avancés](/fr/docs/advanced-fields#barcode)). Tous partagent les [propriétés de base des champs](/fr/docs/tables-overview#proprietes-de-base-des-champs).

| Type                   | Stocke                                                                               |
| ---------------------- | ------------------------------------------------------------------------------------ |
| `single-attachment`    | Un seul fichier téléversé.                                                           |
| `multiple-attachments` | Plusieurs fichiers téléversés.                                                       |
| `barcode`              | Une valeur de code-barres — voir [Champs avancés](/fr/docs/advanced-fields#barcode). |

## `single-attachment`

Un seul fichier téléversé (avatar, document, image).

| Propriété           | Description                                                                                                            |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `bucket`            | Nom du bucket de stockage. Référence un bucket dans `app.buckets`. Utilise le bucket `default` implicite lorsqu'omis.  |
| `allowedFileTypes`  | Tableau des types MIME autorisés (par ex. `["image/png", "image/jpeg"]`). Tous les types autorisés lorsqu'il est vide. |
| `maxFileSize`       | Taille maximale du fichier en **octets** (entier ≥ 1). Exemple : `5242880` pour 5 Mo.                                  |
| `generateThumbnail` | Booléen. Générer des miniatures d'image lors du téléversement.                                                         |
| `storeMetadata`     | Booléen. Stocker les métadonnées (dimensions de l'image, durée de la vidéo).                                           |

```yaml
- id: 1
  name: avatar
  type: single-attachment
  bucket: avatars
  allowedFileTypes: [image/png, image/jpeg, image/gif]
  maxFileSize: 5242880
  generateThumbnail: true
  storeMetadata: true
```

## `multiple-attachments`

Plusieurs fichiers téléversés (une galerie, un ensemble de documents).

| Propriété            | Description                                                                                                                                          |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bucket`             | Nom du bucket de stockage. Référence un bucket dans `app.buckets`. Utilise `default` lorsqu'omis.                                                    |
| `maxFiles`           | Nombre maximal de fichiers autorisés (entier ≥ 1).                                                                                                   |
| `allowedFileTypes`   | Tableau des types MIME autorisés (par ex. `["application/pdf", "application/msword"]`).                                                              |
| `maxFileSize`        | Taille maximale en **octets** par pièce jointe (entier ≥ 1). Exemple : `10485760` pour 10 Mo.                                                        |
| `generateThumbnails` | Booléen. Générer des miniatures d'image lors du téléversement. _(Notez le pluriel — le singulier `generateThumbnail` concerne `single-attachment`.)_ |
| `storeMetadata`      | Booléen. Stocker les métadonnées pour chaque pièce jointe.                                                                                           |

```yaml
- id: 2
  name: documents
  type: multiple-attachments
  bucket: documents
  maxFiles: 10
  allowedFileTypes: [application/pdf, application/msword]
  maxFileSize: 10485760
  generateThumbnails: true
```

:::callout
**Des buckets, pas du stockage en ligne.** Les champs pièce jointe écrivent dans des buckets nommés définis dans `app.buckets` (local ou S3). La propriété `bucket` sélectionne lequel ; l'omettre utilise le bucket `default` implicite. `maxFileSize` est toujours spécifié en **octets**. Voir la documentation des buckets pour la configuration des buckets.
:::

Le champ `barcode` est le troisième membre de la catégorie média mais est documenté aux côtés des autres champs de valeur spécialisés — voir [Champs avancés → barcode](/fr/docs/advanced-fields#barcode).
