我需要POST一些multipart / form-data编码数据。 API要求将所有上载的数据嵌套在单个字段中。在JSON中,它看起来像这样:
{
"image": {
"data": **binary data**,
"id": 1234
}
}
当我使用REST客户端时这很好用,但是我在使用python请求时遇到了麻烦。如果我使用data
而不是files
并且自己设置标题,我想我会更幸运,因为如果我使用files
传递数据,似乎会在幕后进行一些神奇的转换。无论如何,我都会遇到错误。
obj = {
"image": {
"data": **binary data**,
"id": 1234
}
}
requests.post(url, {'Content-Type': 'multipart/form-data'}, data=obj) # AttributeError: 'dict' object has no attribute 'encode'
requests.post(url, files={'files':obj}) # AttributeError: 'dict' object has no attribute 'encode'
我尝试使用json.dumps
对整个对象进行编码,并仅对image
字典进行编码。在这两种情况下,它都会失败,因为二进制数据不可序列化。
这里的任何帮助将不胜感激。我实际上并不是一个Python开发者,所以如果我错过了一些明显的东西,请原谅我。