En spécifiant un files
dans les POST
demande, le Content-Type
de la demande est automatiquement réglé sur multipart/form-data
(suivi par le boundary
utilisée pour séparer chaque partie du corps dans les données utiles multipart), si vous envoyez seulement files
ou form
données et files
en même temps (ainsi, un ne devrait pas tenter de définir le Content-Type
manuellement dans ce cas). Alors que, si seulement form
ont été envoyées, le Content-Type
sera automatiquement réglé sur application/x-www-form-urlencoded
.
Vous pouvez imprimer le Content-Type
de la requête afin de vérifier ce qui précède à l'aide de l'exemple ci-dessous, qui montre comment télécharger plusieurs fichiers (ou un seul) avec (éventuellement) le même key
(c'est-à-dire, 'files'
dans le cas ci-dessous), ainsi qu'avec les options form
données (c'est-à-dire, data=form_data
). La documentation sur la manière de POST
unique et multiple files
peuvent être trouvés aquí y aquí respectivement. Si vous avez besoin de télécharger des fichiers volumineux sans les lire en mémoire, jetez un coup d'oeil à Téléchargements en streaming . Pour le côté serveur - au cas où vous en auriez besoin - veuillez jeter un coup d'oeil à cette réponse d'où est extrait le code ci-dessous, et qui utilise la fonction FastAPI cadre web.
import requests
url = 'http://127.0.0.1:8000/submit'
files = [('files', open('test_files/a.txt', 'rb')), ('files', open('test_files/b.txt', 'rb'))]
#file = {'file': open('test_files/a.txt','rb')} # for sending a single file
form_data ={"name": "foo", "point": 0.13, "is_accepted": False}
resp = requests.post(url=url, data=form_data, files=files)
print(resp.json())
print(resp.request.headers['content-type'])
0 votes
Votre question n'est pas vraiment claire. Que voulez-vous obtenir ? Souhaitez-vous envoyer des données "multipart/form-data" sans téléchargement de fichier dans le formulaire ?
4 votes
Le fait que
files
est utilisé pour faire les deux est une très mauvaise API. J'ai soulevé un problème intitulé Envoi de données multipart - nous avons besoin d'une meilleure API pour régler ce problème. Si vous êtes d'accord pour dire que l'utilisationfiles
Le paramètre permettant d'envoyer des données en plusieurs parties est, au mieux, trompeur. Veuillez demander la modification de l'API dans la question ci-dessus.0 votes
@PiotrDobrogost ce problème est clos. N'encouragez pas les gens à commenter les questions fermées, qu'elles soient pertinentes ou non.
1 votes
C'est pas grave, je viens de réaliser que ton commentaire a été posté avant la fermeture. Je déteste que StackOverflow ne garde pas les choses dans l'ordre chronologique.
1 votes
Vérifier cette réponse stackoverflow.com/a/64586578/8826047 La frontière est importante !