我正在使用python 3,我有这段代码,试图将base64从流中取出并返回为json-但不起作用。
stream = BytesIO()
img.save(stream,format='png')
return base64.b64encode(stream.getvalue())
在我看来,我有:
hm =mymap()
strHM = hm.generate(data)
return HttpResponse(json.dumps({"img": strHM}),content_type="application/json" )
获取错误不是 JSON 可序列化的。 base64.b64encode(stream.getvalue()) 似乎给出了字节
在 Python 3.x 中,base64.b64encode
接受一个bytes
对象并返回一个bytes
对象。
>>> base64.b64encode(b'a')
b'YQ=='
>>> base64.b64encode(b'a').decode()
'YQ=='
您需要使用bytes.decode
将其转换为str
对象:
return base64.b64encode(stream.getvalue()).decode()
我认为
有一个更简单的解决方案。
只需从流中获取字节并将其传递给 b64encode。
b64encode(f.getvalue())
输出(也是字节)
b'c2VwYWwgbGVuZ3RoIChjbSksc2V...'