Beispiel für Python, der Anfragen zum Senden/Hochladen mehrerer Dateien implementiert

不言
Freigeben: 2018-06-04 11:41:49
Original
3323 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich Beispiele für die Implementierung von Anfragen zum Senden/Hochladen mehrerer Dateien vor. Jetzt kann ich ihn mit Ihnen teilen

1. Erforderliche Umgebung

Python2 🎜>

Es gibt nur eine Schnittstelle zum Senden von Dateien in Anfragen, nämlich die Verwendung des Dateiparameters request.post. Das Anfrageformular lautet wie folgt:

url = "http://httpbin.org/post" 
data = None 
files = { ... } 
r = requests.post(url, data, files=files)
Nach dem Login kopieren

Der Dateiparameter kann viele Formen von Daten akzeptieren:

Wörterbuchtyp

Tupellistentyp

2.1. Der Parameter für Wörterbuchtypdateien

Das offiziell empfohlene Wörterbuchparameterformat lautet wie folgt:

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"), 
 "field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}) 
}
Nach dem Login kopieren

Der Schlüssel dieses Wörterbuchs besteht darin, den Feldnamen in der Postanforderung zu senden, und der Wert des Wörterbuchs beschreibt die Informationen der zu sendenden Datei. Wie aus dem Obigen hervorgeht, kann der Wert ein 2-Tupel, 3-Tupel oder 4-Tupel sein.

Dieses Tupel hat die Bedeutung:

("filename", "fileobject", "content-type", "headers")
Nach dem Login kopieren

Standardmäßig wird der Standardwert

verwendet. Zusätzlich zur oben genannten Verwendungsform unterstützt „Requests“ tatsächlich noch eine prägnantere Parameterform, wie folgt:

{ 
 "field1" : open("filePath1", "rb")), 
 "field2" : open("filePath2", "rb")), 
 "field3" : open("filePath3", "rb")) 
}
Nach dem Login kopieren

Der äquivalente Effekt dieser Parameterform ist wie folgt, wobei Dateiname der Dateiname des Dateipfads ist:

{ 
 "field1" : ("filename1", open("filePath1", "rb")), 
 "field2" : ("filename2", open("filePath2", "rb")), 
 "field3" : ("filename3", open("filePath3", "rb")) 
}
Nach dem Login kopieren

Natürlich können Sie auch eine Dateianfrage wie diese senden

{ 
 "field1" : open("filePath1", "rb").read()) 
}
Nach dem Login kopieren

Der Dateiname hier Der Wert ist Feld1

2.2, Dateiparameter des Tupellistentyps

Tatsächlich ist die Form der Tupelliste grundsätzlich dieselbe wie die des Wörterbuchs, außer dass die äußerste Verpackung unterschiedlich ist Die Wörterbuchparameterform wird schließlich in eine Tupelspaltenform umgewandelt. Die von der offiziellen Website empfohlene Verwendung lautet wie folgt:

[ 
 ("field1" : ("filename1", open("filePath1", "rb"))), 
 ["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")], 
 ("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})) 
]
Nach dem Login kopieren

Die Unterelemente in der Liste können Tupel oder Listen sein; die Einleitungsform wird ebenfalls unterstützt hier wie folgt:

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

3. Senden Sie mehrere Dateien in einem einzigen Feld [d. h. beim Hochladen von Dateien auf „Multi“ einstellen -select]

3.1. Wörterbuchparameterform

{ 
 "field1" : [ 
     ("filename1", open("filePath1", "rb")), 
     ("filename2", open("filePath2", "rb"), "image/png"), 
     open("filePath3", "rb"), 
     open("filePath4", "rb").read() 
    ] 
}
Nach dem Login kopieren

3.2. Tupellistenformular

[ 
 ("field1" , ("filename1", open("filePath1", "rb"))), 
 ("field1" , ("filename2", open("filePath2", "rb"), "image/png")), 
 ("field1" , open("filePath3", "rb")), 
 ("field1" , open("filePath4", "rb").read()) 
]
Nach dem Login kopieren

Bei Anfragen, die in den beiden oben genannten Formularen gesendet werden, befinden sich alle Dateien im selben Feld. Der Hintergrunddienst kann alle Dateien abrufen Objekte aus dem Feld Feld1< ​​🎜>

4. Gemeinsame Datenfelder gleichzeitig senden

Das Obige beschreibt die Verwendung von Dateiinhaltsanfragen und manchmal senden wir auch Dateien Es ist notwendig, normale Datenfelder zu senden. Zu diesem Zeitpunkt können die normalen Datenfelder wie folgt direkt im Datenparameter gespeichert werden:

data = {"k1" : "v1"} 
files = { 
 "field1" : open("1.png", "rb") 
} 
r = requests.post("http://httpbin.org/post", data, files=files)
Nach dem Login kopieren
Verwandte Empfehlungen:

Python implementiert eine ultraeinfache Videoobjekt-Extraktionsfunktion

Beispiel für Python, das das Ping einer bestimmten IP implementiert


Das obige ist der detaillierte Inhalt vonBeispiel für Python, der Anfragen zum Senden/Hochladen mehrerer Dateien implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage