Heim >Backend-Entwicklung >Python-Tutorial >Beispiel für Python, der Anfragen zum Senden/Hochladen mehrerer Dateien implementiert

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

不言
不言Original
2018-06-04 11:41:493367Durchsuche

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)

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

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

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

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

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

{ 
 "field1" : open("filePath1", "rb").read()) 
}

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

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 
]

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

3.2. Tupellistenformular

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

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

Stellungnahme:
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