Pythonで「リクエスト」を使用してマルチパートフォームのアップロードを試みています。ファイルをアップロードできますが、curl の -F フラグを介して通常渡される追加のフィールドは読み込まれません。私が模倣しようとしているcurlコマンド:
curl -v -u user:password -X POST -F 'properties={"filename":"maurizio.png"}' -F "file=@maurizio.png" 192.168.59.103:8080/testdb/mybucket.files
リクエストのコードは次のとおりです。
url = "http://192.168.59.103:8080/testdb/mybucket.files"
content_type = "multipart/form-data"
params = {"filename":"maurizio.png"}
params["_id"] = "test_hash_1234"
data = open('maurizio.png','rb').read()
files = {'file': ('maurizio.png',data,content_type,params)}
request = requests.post(url,files=files,auth=('user','password'))
このファイルは、mongodb の restheart api にロードされます。「_id」は、データベースがオブジェクトを参照するために使用する特別なオブジェクト ID です。ファイル名などの他のドキュメント フィールドに加えて、そのドキュメント フィールドを指定する必要があります。ファイルは、gridfs と呼ばれる Mongo の BLOB データストアにアップロードされます。curl を使用してデータと追加のドキュメント フィールドをアップロードできますが、上記の「リクエスト」コードはデータのみをアップロードし、追加のドキュメント フィールドはアップロードしません。クエリを実行するには、これらの追加フィールドが必要です。
-F フラグを python の requests モジュールと同等のものに変換するのを手伝ってくれる人はいますか? ありがとう!