我尝试使用请求库将图片上传到python-eve服务器。为此,我发送一个multipart / form-data请求。这似乎是我的架构的问题,如下所示:
schema = {
'name': {
'type': 'string',
'required': True
},
'description': {
'type': 'string'
},
'picture': {
'type': 'media'
},
'properties': {
'type' : 'dict'
}
}
请求如下所示:
import requests
file = open('/home/user/Desktop/1500x500.jpeg', 'rb')
payload = {'name': 'hello', 'properties': {'status': 'on_hold'}}
r = requests.post("http://localhost:5001/node", data=payload, files={'picture': file})
我得到的是ResourceInvalid异常:
ResourceInvalid: Failed. Response status: 422. Response message: UNPROCESSABLE ENTITY. Error message: {"_status": "ERR", "_issues": {"properties": "must be of dict type"}, "_error": {"message": "Insertion failure: 1 document(s) contain(s) error(s)", "code": 422}}
这有什么解决方案吗?我错过了有关请求格式的内容吗?
答案 0 :(得分:3)
这样的事情应该可以正常工作:
import requests
file = open('/home/user/Desktop/1500x500.jpeg', 'rb')
payload = {'name': 'hello'}
r = requests.post("http://localhost:5001/node", data=payload, files={'picture': file})
答案 1 :(得分:3)
我刚刚有一个类似的issue。我建议您尝试以这种方式更改代码:将字典转储到json对象中,并添加标题来描述您要发送的内容。
import requests
import json
file = open('/home/user/Desktop/1500x500.jpeg', 'rb')
payload = {'name': 'hello', 'properties': {'status': 'on_hold'}}
headers = {'Content-type': 'application/json; charset=utf-8'}
r = requests.post("http://localhost:5001/node", data=json.dumps(payload), files={'picture': file}, headers=headers)