ホームページ >バックエンド開発 >Python チュートリアル >Requests ライブラリを使用して Python で Multipart/Form-Data リクエストを送信するにはどうすればよいですか?

Requests ライブラリを使用して Python で Multipart/Form-Data リクエストを送信するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-03 12:09:42749ブラウズ

How can I send Multipart/Form-Data requests in Python using the Requests library?

Python でのリクエストによる "Multipart/Form-Data" の送信

Multipart/form-data は、ファイルのアップロードに使用される一般的なエンコーディングです。他のデータを Web サーバーに送信します。 Python の Requests ライブラリを使用すると、マルチパート/フォームデータ リクエストを簡単に送信できます。

ファイルの送信

ファイルを送信するには、次の files パラメータを使用できます。 post() メソッド。このパラメータは、キーがフォーム フィールド名で、値がアップロードするファイル オブジェクトであるディクショナリを想定しています。

フォーム データの送信

ファイルに加えて、 files パラメータを使用してフォーム データを送信することもできます。ただし、files パラメータを指定すると、リクエストはデフォルトの application/x-www-form-urlencoded POST ではなく multipart/form-data POST を送信することに注意することが重要です。

To send form data using the files パラメータを使用すると、文字列またはバイト オブジェクトをフォーム フィールドの値として渡すだけで済みます。例:

import requests

files = {'foo': 'bar'}
response = requests.post('http://httpbin.org/post', files=files)

ファイル パラメーターのカスタマイズ

ファイル名、コンテンツ タイプ、および各ファイルの追加ヘッダーを、単一の文字列またはバイトオブジェクト。タプルには次のものが含まれている必要があります。

  • ファイル名 (オプション)
  • コンテンツ
  • コンテンツ タイプ (オプション)
  • 追加ヘッダー (オプション)

向け例:

files = {'foo': (None, 'bar')}  # No filename parameter

同じ名前で複数のフィールドを送信

タプルのリストを値として指定することで、同じ名前で複数のフィールドを送信することもできます。ファイルパラメータ。例:

files = {'foo': [(None, 'bar'), (None, 'baz')]}

Requests-Toolbelt の使用

requests-toolbelt プロジェクトは、マルチパート/フォームデータ リクエストの送信プロセスを簡素化する高度なマルチパート エンコーダーを提供します。 。このエンコーダを使用すると、次のことができます。

  • 開いているファイル オブジェクトからのリクエストをストリーミングする
  • デフォルトでファイル名パラメータを省略する
  • マルチパート ヘッダーで使用される境界を制御する

例:

from requests_toolbelt.multipart.encoder import MultipartEncoder

mp_encoder = MultipartEncoder(
    fields={
        'foo': 'bar',
        'spam': ('spam.txt', open('spam.txt', 'rb'), 'text/plain'),
    }
)
headers = {'Content-Type': mp_encoder.content_type}
response = requests.post('http://httpbin.org/post', data=mp_encoder, headers=headers)

以上がRequests ライブラリを使用して Python で Multipart/Form-Data リクエストを送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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