L'attribut enctype="multipart/form-data" dans Django

upload des fichiers avec l'attribut enctype multipart form-data django
 

1. A propos de l'attribut enctype="multipart/form-data"

L'attribut enctype="multipart/form-data" est essentiel dans les formulaires Django (et HTML en général) lorsqu'on doit envoyer des fichiers depuis un client vers un serveur.

Fonctionnement

  1. Définition : enctype (Encoding Type) spécifie comment les données du formulaire doivent être encodées lors de leur envoi au serveur.
  2. Valeur par défaut : Sans cet attribut, la valeur par défaut est application/x-www-form-urlencoded, qui convient pour les données textuelles simples.
  3. Nécessité pour les fichiers : Pour envoyer des fichiers (images, documents, etc.), vous devez utiliser multipart/form-data car :
    • Il permet d'envoyer des données binaires
    • Il sépare les différents champs du formulaire en "parties" distinctes
 

2. Utilisation dans Django

Dans un template Django, vous l'utiliserez comme ceci :

 

3. Conséquences côté serveur

3.1 Dans une vue Django:

  • Vérifier request.method == 'POST'
  • Gérer à la fois request.POST pour les données normales
  • Et request.FILES pour les fichiers uploadés

3.2 Exemple de vue en django

 

4. Nécessité de l'attribut attribut enctype="multipart/form-data"

  1. Envoie des fichiers : Sans multipart/form-data, les fichiers ne seraient pas correctement encodés et ne parviendraient pas au serveur
  2. Intégrité des données binaires : L'attribut enctype="multipart/form-data" permet de préserver l'intégrité des données binaires pendant le transfert
  3. Encodage standard : C'est le seul encodage standardisé pour l'envoi de fichiers via HTTP
 

5. Utilisation de l'attribut enctype="multipart/form-data" dans Flask

Dans Flask, comme dans Django, l'attribut enctype="multipart/form-data" est essentiel pour gérer l'upload de fichiers, mais son implémentation diffère légèrement.

5.1 Usage de base dans Flask

5.2 Traitement côté serveur avec Flask

Accès aux fichiers :

Configuration nécessaire :

Flask utilise request.files pour accéder aux fichiers uploadés

Vous pouvez limiter la taille des fichiers avec :

 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply