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 ?

Comment puis-je envoyer des requêtes Multipart/Form-Data en Python à l'aide de la bibliothèque Requests ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-03 12:09:42749parcourir

How can I send Multipart/Form-Data requests in Python using the Requests library?

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 :

  • Nom de fichier (facultatif)
  • Contenu
  • Type de contenu (facultatif)
  • En-têtes supplémentaires (facultatif)

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 :

  • Diffuser des requêtes à partir d'objets de fichiers ouverts
  • Omettre les paramètres de nom de fichier par défaut
  • Contrôler la limite utilisée dans l'en-tête multipart

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn