ホームページ >バックエンド開発 >Python チュートリアル >Python のリクエスト ライブラリを使用してファイルとフォーム データを含むマルチパート/フォーム データを送信する方法

Python のリクエスト ライブラリを使用してファイルとフォーム データを含むマルチパート/フォーム データを送信する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-13 12:25:13398ブラウズ

How to Send Multipart/Form-Data with Files and Form Data Using Python's Requests Library?

Python でのリクエストを使用した Multipart/Form-Data の送信

Multipart/form-data は、フォーム データとファイルは 1 回のリクエストで送信されます。 Python のリクエストでこの形式を使用するには、ファイル パラメーターを指定します。これは、キーがフォーム データ パラメーター名であり、値がファイル パスまたはファイル コンテンツを含むタプルであるディクショナリである必要があります。

次の例は、テキスト形式の値とともにファイルを送信:

import requests

files = {'file_field': 'path/to/file.ext', 'text_field': 'text_value'}

response = requests.post('http://example.com/upload', files=files)

ファイル名とコンテンツの制御Type

ファイル ディクショナリの値としてタプルを使用することで、各部分のファイル名とコンテンツ タイプを制御できます。タプルには、次のように 2 ~ 4 つの要素が含まれている必要があります。

  • 要素 1: ファイル名 (オプション)
  • 要素 2: コンテンツ
  • 要素 3 (オプション): コンテンツ タイプ
  • 要素 4 (オプション): 追加ヘッダー

たとえば、ファイル名とコンテンツ タイプを指定するには、テキスト値:

files = {'text_field': (None, 'text_value', 'text/plain')}

同じフィールドを複数指定する名前

同じ名前の複数のフィールドを送信するには、ファイル ディクショナリの値としてタプルのリストを使用します。

高度なマルチパート サポートのための Requests-Toolbelt の使用

requests-toolbelt プロジェクトは、高度なマルチパート サポートを提供します。リクエストとは異なり、デフォルトではファイル名パラメータが設定されず、開いているファイル オブジェクトからフィールドをストリーミングできます。

リクエストツールベルトの使用例を次に示します。

from requests_toolbelt.multipart.encoder import MultipartEncoder

mp_encoder = MultipartEncoder(
    fields={
        'file_field': ('file.ext', open('path/to/file.ext', 'rb'), 'application/octet-stream'),
        'text_field': 'text_value',
    }
)

response = requests.post(
    'http://example.com/upload',
    data=mp_encoder,
    headers={'Content-Type': mp_encoder.content_type}
)

以上がPython のリクエスト ライブラリを使用してファイルとフォーム データを含むマルチパート/フォーム データを送信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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