Heim >Backend-Entwicklung >Python-Tutorial >Wie sende ich mehrteilige Formulardaten mit Dateien und Standardformulardaten in Python?

Wie sende ich mehrteilige Formulardaten mit Dateien und Standardformulardaten in Python?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 07:51:12540Durchsuche

How to Send Multipart Form Data with Files and Standard Form Data in Python?

So erstellen Sie mehrteilige Formulardatenanforderungen in Python

Frage: Wie kann ich mehrteilige Formulardaten in Python mithilfe der Anforderungsbibliothek senden? Obwohl ich weiß, wie man Dateien anhängt, fällt es mir schwer, Standardformulardaten in solche Anfragen zu integrieren.

Antwort:

Anfragen verarbeitet mehrteilige Formulardaten automatisch, wenn eine Datei abgelegt wird Der Parameter wird angegeben, was zu einer multipart/form-data POST-Anfrage anstelle einer application/x-www-form-urlencoded führt POST.

Syntax:

from requests import post

response = post(
    url,
    files={
        "form_field_name": "form_field_value",     # No quotes needed for non-string values
    }
)

Beispiel:

response = post("http://httpbin.org/post", files={"foo": "bar"})
assert response.status_code == 200

Erweiterte Steuerung:

Verwenden Sie Tupel, um den Dateinamen, den Inhaltstyp und mehr anzupassen Überschriften für jedes Teil. Zu den Tupelkomponenten gehören:

  • Dateiname (optional)
  • Inhalt
  • Inhaltstyp (optional)
  • Header-Wörterbuch (optional)

Beispiel:

files = {"foo": (None, "bar")}   # No filename specified

Geordnete Mehrfachfelder:

Verwenden Sie eine Liste von Tupeln für geordnete oder mehrere Felder mit demselben Namen.

Verarbeitung von Daten und Dateien:

Bei der Verwendung von Daten und Dateien hat ein String-Datenparameter Vorrang. Andernfalls werden sowohl Daten als auch Dateien in der Anfrage kombiniert.

Optionale Bibliotheken:

Das request-toolbelt-Projekt bietet erweiterte Multipart-Unterstützung und ermöglicht Folgendes:

  • Streaming von Dateiobjekten
  • Keine Standard-Dateinamenparameter
  • Benutzerdefiniert Dateiname, Teil-MIME-Typ und zusätzliche Header mit Tupeln

Beispiel mit request-toolbelt:

import MultipartEncoder from requests_toolbelt

fields = {
    "foo": b"bar",    # Fields support bytes objects
    "spam": ("spam.txt", open("spam.txt", "rb"), "text/plain")   # Stream files
}

mp_encoder = MultipartEncoder(fields)

response = post(
    url,
    data=mp_encoder,
    headers={"Content-Type": mp_encoder.content_type}
)

Hinweis: Für Verwenden Sie bei der Methode „requests-toolbelt“ nicht das Argument „files=“, da der MultipartEncoder als Datennutzlast bereitgestellt wird.

Das obige ist der detaillierte Inhalt vonWie sende ich mehrteilige Formulardaten mit Dateien und Standardformulardaten in Python?. 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