我正在尝试在 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。除了文件名等其他文档字段之外,我还需要指定该文档字段。该文件被上传到 Mongo 的名为 gridfs 的 blob 数据存储中。我可以使用 curl 上传数据和附加文档字段,但上面的“请求”代码只上传数据而不是附加文档字段。我需要那些额外的字段来查询。
有人可以帮我将 -F 标志转换为与 python 的 requests 模块等效的东西吗?谢谢!