Maison > développement back-end > Tutoriel Python > Exemple de python implémentant des requêtes pour envoyer/télécharger plusieurs fichiers

Exemple de python implémentant des requêtes pour envoyer/télécharger plusieurs fichiers

不言
Libérer: 2018-06-04 11:41:49
original
3356 Les gens l'ont consulté

Cet article présente principalement des exemples sur la façon d'implémenter des requêtes en Python pour envoyer/télécharger plusieurs fichiers. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

1. Environnement requis

Python2 🎜>


Il n'y a qu'une seule interface pour envoyer des fichiers dans les requêtes, qui consiste à utiliser le paramètre files des requêtes. .post. Le formulaire de demande est le suivant :

Le paramètre files peut accepter de nombreuses formes de données. Les deux formes les plus basiques sont :

Type de dictionnaire

Type de liste de tuples

url = "http://httpbin.org/post" 
data = None 
files = { ... } 
r = requests.post(url, data, files=files)
Copier après la connexion

2.1. Paramètre de fichiers de type dictionnaire

Le format de paramètre de dictionnaire officiellement recommandé est le suivant :

Ce dictionnaire La clé est le nom du champ lors de l'envoi de la demande de publication, et la valeur du dictionnaire décrit les informations du fichier à envoyer ; comme on peut le voir ci-dessus, la valeur peut être un 2-tuple, 3-tuple ou 4-tuple

La signification de chaque champ de ce tuple est :

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"), 
 "field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}) 
}
Copier après la connexion

Par défaut, la valeur par défaut

sera utilisée sauf pour le formulaire d'utilisation ci-dessus, les requêtes prennent en fait en charge un formulaire de paramètre plus concis, comme suit :

("filename", "fileobject", "content-type", "headers")
Copier après la connexion

L'effet équivalent des paramètres dans ce formulaire est le suivant, où nom de fichier est le nom du chemin du fichier :

{ 
 "field1" : open("filePath1", "rb")), 
 "field2" : open("filePath2", "rb")), 
 "field3" : open("filePath3", "rb")) 
}
Copier après la connexion

Bien sûr, vous pouvez également envoyer une demande de fichier comme celle-ci

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb")), 
 "field3" : ("filename3", open("filePath3", "rb")) 
}
Copier après la connexion

La valeur du nom de fichier ici est field1

2.2. Le paramètre files du type liste de tuples

{ 
 "field1" : open("filePath1", "rb").read()) 
}
Copier après la connexion
En fait, la forme de la liste de tuples est la même que celle du dictionnaire. La forme est fondamentalement la même, sauf que la forme la plus externe l'empaquetage est différent ; dans les requêtes, la forme des paramètres du dictionnaire sera finalement convertie en forme de colonne de tuple. L'utilisation recommandée par le site officiel est la suivante :

Les sous-éléments de la liste peuvent être des tuples ou des listes, la forme d'introduction est ; également pris en charge ici. Comme suit :

[ 
 ("field1" : ("filename1", open("filePath1", "rb"))), 
 ["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")], 
 ("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})) 
]
Copier après la connexion

3. , il est défini sur sélection multiple]

[ 
 ("field1" : open("filePath1", "rb"))), ##filename 使用的是filepath的文件名 
 ("field2" : open("filePath2", "rb").read())) ##filename 使用的是键值,即 field2 
]
Copier après la connexion

3.1 Formulaire de paramètre de dictionnaire

3.2. Formulaire de liste de tuples

{ 
 "field1" : [ 
     ("filename1", open("filePath1", "rb")), 
     ("filename2", open("filePath2", "rb"), "image/png"), 
     open("filePath3", "rb"), 
     open("filePath4", "rb").read() 
    ] 
}
Copier après la connexion

Pour les demandes envoyées dans les deux formulaires ci-dessus, tous les fichiers seront sous le même champ, et le service d'arrière-plan n'a besoin que de démarrer à partir du champ field1. Vous pouvez obtenir tous les objets fichier

4. Envoyer les champs de données communs en même temps

[ 
 ("field1" , ("filename1", open("filePath1", "rb"))), 
 ("field1" , ("filename2", open("filePath2", "rb"), "image/png")), 
 ("field1" , open("filePath3", "rb")), 
 ("field1" , open("filePath4", "rb").read()) 
]
Copier après la connexion

Ce qui précède décrit l'utilisation de l'envoi de demandes de contenu de fichier, alors qu'il existe parfois lors de l'envoi d'un fichier, nous devons également envoyer des champs de données ordinaires. À ce stade, les champs de données ordinaires peuvent être stockés directement dans le paramètre data. , comme suit :

Recommandations associées :

Python implémente une fonction d'extraction d'objet vidéo super simple

data = {"k1" : "v1"} 
files = { 
 "field1" : open("1.png", "rb") 
} 
r = requests.post("http://httpbin.org/post", data, files=files)
Copier après la connexion

Un exemple de Python implémentant le ping sur une adresse IP spécifiée


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal