Maison >développement back-end >Tutoriel Python >Comment puis-je envoyer des requêtes Multipart/Form-Data en Python à l'aide de la bibliothèque Requests ?
Envoi de "Multipart/Form-Data" avec des requêtes en Python
Multipart/form-data est un encodage courant utilisé pour télécharger des fichiers et d'autres données vers un serveur Web. Avec la bibliothèque Requests en Python, vous pouvez facilement envoyer des requêtes multipart/form-data.
Envoi de fichiers
Pour envoyer un fichier, vous pouvez utiliser le paramètre files de la méthode post(). Ce paramètre attend un dictionnaire où les clés sont les noms des champs du formulaire et les valeurs sont les objets de fichier à télécharger.
Envoi des données du formulaire
En plus des fichiers, vous peut également envoyer des données de formulaire en utilisant le paramètre files. Cependant, il est important de noter que Requests enverra un POST multipart/form-data au lieu du POST application/x-www-form-urlencoded par défaut lorsque vous spécifiez un paramètre files.
Pour envoyer des données de formulaire à l'aide du En paramètre files, vous pouvez simplement passer un objet chaîne ou octets comme valeur du champ du formulaire. Par exemple :
import requests files = {'foo': 'bar'} response = requests.post('http://httpbin.org/post', files=files)
Personnalisation des paramètres de fichier
Vous pouvez contrôler davantage le nom de fichier, le type de contenu et les en-têtes supplémentaires pour chaque fichier en utilisant un tuple au lieu d'un objet chaîne unique ou octets. Le tuple doit contenir :
Pour exemple :
files = {'foo': (None, 'bar')} # No filename parameter
Envoi de plusieurs champs avec le même nom
Vous pouvez également envoyer plusieurs champs avec le même nom en fournissant une liste de tuples comme valeur du paramètre de fichiers. Par exemple :
files = {'foo': [(None, 'bar'), (None, 'baz')]}
Utilisation de Requests-Toolbelt
Le projet request-toolbelt fournit un encodeur multipart avancé qui simplifie le processus d'envoi de requêtes multipart/form-data . Avec cet encodeur, vous pouvez :
Par exemple :
from requests_toolbelt.multipart.encoder import MultipartEncoder mp_encoder = MultipartEncoder( fields={ 'foo': 'bar', 'spam': ('spam.txt', open('spam.txt', 'rb'), 'text/plain'), } ) headers = {'Content-Type': mp_encoder.content_type} response = requests.post('http://httpbin.org/post', data=mp_encoder, headers=headers)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!