この記事では主に Python で複数のファイルを送信/アップロードするリクエストを実装する方法の例を紹介します。必要な環境を共有します。
Python2.
url = "http://httpbin.org/post" data = None files = { ... } r = requests.post(url, data, files=files)ファイルパラメータは、多くの形式のデータを受け入れることができます: 辞書型
タプルリスト型
2.1. 辞書型ファイルパラメータ。使用されるパラメータの形式は次のとおりです:
{ "field1" : ("filename1", open("filePath1", "rb")), "field2" : ("filename2", open("filePath2", "rb"), "image/jpeg"), "field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"}) }
この辞書のキーは投稿リクエストを送信するときのフィールド名であり、辞書の値は送信されるファイルの情報を記述します。上記では、値は 2 タプル、3 タプル、または 4 タプルです。
このタプルの各フィールドの意味は次のとおりです:
("filename", "fileobject", "content-type", "headers")
デフォルトでは、デフォルト値が使用されますさらに上記の使用形式に加えて、実際、リクエストは次のようなより簡潔なパラメータ形式をサポートしています
{ "field1" : open("filePath1", "rb")), "field2" : open("filePath2", "rb")), "field3" : open("filePath3", "rb")) }
この形式のパラメータの同等の効果は次のとおりです。ここで、filename はファイルパスのファイル名です:
{ "field1" : ("filename1", open("filePath1", "rb")), "field2" : ("filename2", open("filePath2", "rb")), "field3" : ("filename3", open("filePath3", "rb")) }
もちろん、このように送信することもできます ファイルリクエスト
{ "field1" : open("filePath1", "rb").read()) }
ここでのファイル名の値はフィールド1
2.2、タプルリスト型のファイルパラメータ実際には、タプル リストの内容は、最も外側を除いて基本的にディクショナリと同じです。リクエスト内部のパッケージ化が異なり、ディクショナリ パラメータ形式は最終的にタプル列形式に変換されます。公式 Web サイトで推奨されている使用法は次のとおりです。
[ ("field1" : ("filename1", open("filePath1", "rb"))), ["field2" : ("filename2", open("filePath2", "rb"), "image/jpeg")], ("field3" : ("filename3", open("filePath3", "rb"), "image/jpeg", {"refer" : "localhost"})) ]
リスト内のサブ項目は、次のようにタプルまたはリストにすることもできます。
3. 複数のファイルを送信するための単一フィールド (つまり、ファイルをアップロードするときに複数選択に設定します)
3.1、辞書パラメータ形式[ ("field1" : open("filePath1", "rb"))), ##filename 使用的是filepath的文件名 ("field2" : open("filePath2", "rb").read())) ##filename 使用的是键值,即 field2 ]3.2、タプルリスト形式
{ "field1" : [ ("filename1", open("filePath1", "rb")), ("filename2", open("filePath2", "rb"), "image/png"), open("filePath3", "rb"), open("filePath4", "rb").read() ] }
上記の 2 つのフォームで送信されたリクエストの場合、すべてのファイルは同じフィールドの下にあります。バックグラウンド サービスは、field1 フィールドからすべてのファイル オブジェクトを取得できます。
4. 通常のデータ フィールドを同時に送信します。
上記の紹介は、ファイルコンテンツの送信リクエストを使用するもので、ファイルの送信中に通常のデータフィールドを送信する必要がある場合があります。このとき、通常のデータフィールドは次のように data パラメーターに直接保存できます。
[ ("field1" , ("filename1", open("filePath1", "rb"))), ("field1" , ("filename2", open("filePath2", "rb"), "image/png")), ("field1" , open("filePath3", "rb")), ("field1" , open("filePath4", "rb").read()) ]関連する推奨事項:
Python は非常にシンプルなビデオオブジェクト抽出関数を実装します
指定された IP への ping を実装する Python の例以上が複数のファイルを送信/アップロードするリクエストを実装する Python の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。