質問: リクエスト ライブラリを使用して Python でマルチパート フォーム データを送信するにはどうすればよいですか?ファイルを添付する方法は理解していますが、そのようなリクエストに標準フォーム データを組み込むのに苦労しています。
回答:
リクエストは、ファイルが添付されるときにマルチパート フォーム データを自動的に処理します。パラメータが指定されているため、application/x-www-form-urlencoded の代わりに multipart/form-data POST リクエストが発生します。 POST.
構文:
from requests import post response = post( url, files={ "form_field_name": "form_field_value", # No quotes needed for non-string values } )
例:
response = post("http://httpbin.org/post", files={"foo": "bar"}) assert response.status_code == 200
高度な制御:
タプルを使用してカスタマイズしますファイル名、コンテンツ タイプ、各部分の追加ヘッダー。タプルのコンポーネントには次のものが含まれます。
例:
files = {"foo": (None, "bar")} # No filename specified
順序付けされた複数のフィールド:
タプルのリストを使用する順序付けされたフィールドまたは同じフィールドの複数のフィールドの場合name.
データとファイルの処理:
データとファイルの両方を使用する場合、文字列データ パラメーターが優先されます。それ以外の場合、データとファイルの両方がリクエスト内で結合されます。
オプションのライブラリ:
requests-toolbelt プロジェクトは、高度なマルチパート サポートを提供し、次のことを可能にします。
requests-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} )
注意:requests-toolbelt メソッドの場合、files= 引数を引数として使用しないでください。 MultipartEncoder はデータ ペイロードとしてポストされます。
以上がPython でファイルと標準フォーム データを含むマルチパート フォーム データを送信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。