Gar*_*ong 5 python curl python-requests restheart
我正在尝试使用 python 中的“请求”进行多部分表单上传。我可以上传文件,但它永远不会加载通常通过 -F 标志与 curl 传递的其他字段。我试图模仿的 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
Run Code Online (Sandbox Code Playgroud)
请求代码是:
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'))
Run Code Online (Sandbox Code Playgroud)
这个文件被加载到 mongodb 的 resheart api 中。“_id”是数据库用来引用对象的特殊对象 ID。除了文件名等其他文档字段之外,我还需要指定该文档字段。该文件被上传到名为 gridfs 的 Mongo 的 blob 数据存储中。我可以使用 curl 上传数据和附加文档字段,但上面的“请求”代码只上传数据而不上传附加文档字段。我需要那些额外的字段来查询。
有人可以帮我将 -F 标志转换为相当于 python 的请求模块的东西吗?谢谢!
查看手册中的示例:
files = {'file': ('report.xls', open('report.xls', 'rb'))}
r = requests.post(url, files=files)
Run Code Online (Sandbox Code Playgroud)
请注意,首先您应该传递文件而不是数据(您不需要read()文件的内容,只需传递文件对象)