ホームページ  >  記事  >  バックエンド開発  >  複数のファイルを送信/アップロードするリクエストを実装する Python の例

複数のファイルを送信/アップロードするリクエストを実装する Python の例

不言
不言オリジナル
2018-06-04 11:41:493324ブラウズ

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

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