ホームページ >バックエンド開発 >Python チュートリアル >Python でファイルと標準フォーム データを含むマルチパート フォーム データを送信する方法

Python でファイルと標準フォーム データを含むマルチパート フォーム データを送信する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-25 07:51:12537ブラウズ

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

Python でマルチパート フォーム データ リクエストを作成する方法

質問: リクエスト ライブラリを使用して 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 プロジェクトは、高度なマルチパート サポートを提供し、次のことを可能にします。

  • ファイル オブジェクトからストリーミング
  • デフォルトのファイル名なしパラメータ
  • タプルを使用したカスタム ファイル名、部分 MIME タイプ、追加ヘッダー

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。