2014-12-02 82 views
10

我正在使用python 3 &我有這段代碼,試圖讓base64出現流並返回爲json - 但不工作。django bytesIO to 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())似乎給出字節

+0

strHM是base64.b64encode(stream.getvalue()) – user903772 2014-12-02 04:59:26

回答

14

在Python 3.x中,base64.b64encode接受一個bytes對象並返回一個bytes對象。

>>> base64.b64encode(b'a') 
b'YQ==' 
>>> base64.b64encode(b'a').decode() 
'YQ==' 

你需要將其轉換爲str對象,使用bytes.decode

return base64.b64encode(stream.getvalue()).decode() 
+1

我失蹤'.decode()'在我的瓶應用程序。謝謝! – Robula 2015-12-02 10:51:12