在POST调用中发送FILE数据

时间:2014-12-18 17:55:23

标签: python json file

我有以下代码:

email = 'david@gmail.com'
avatar = open('/Users/david/Desktop/a.png').read()
data = {
  'email': email,
  'avatar': avatar
}
body = json.dumps(data)
requests.post(url, headers=headers, data = body)

然而,当我尝试这样做时,我得到以下json错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte

我如何在此处发送文件数据?

1 个答案:

答案 0 :(得分:0)

最有可能,因为read()没有按照您的想法行事:

>>> f = open('image.png').read()
>>> f
'\x89PNG\n'

有可能它正在读到它到达第一个'线'的位置,即换行符,而不是像我在上面的测试中所做的那样。

此外,如果您要将png数据添加到JSON对象,您可能还需要转换为base64,否则您将获得更多无效的UTF8字符。