Maison  >  Article  >  développement back-end  >  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

不言
不言original
2018-06-04 11:41:493279parcourir

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)

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"}) 
}

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")

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")) 
}

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")) 
}

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()) 
}
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"})) 
]

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

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

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() 
    ] 
}

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()) 
]

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)

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!

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