我有以下代码:
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
我如何在此处发送文件数据?
答案 0 :(得分:0)
最有可能,因为read()
没有按照您的想法行事:
>>> f = open('image.png').read()
>>> f
'\x89PNG\n'
有可能它正在读到它到达第一个'线'的位置,即换行符,而不是像我在上面的测试中所做的那样。
此外,如果您要将png数据添加到JSON对象,您可能还需要转换为base64,否则您将获得更多无效的UTF8字符。