2014-12-02 10 views
10

Sto usando python 3 & Ho questo codice, cercando di ottenere base64 fuori dal flusso e returnn come json - ma non funziona.django bytesIO a base64 Stringa e ritorno come JSON

 stream = BytesIO() 
     img.save(stream,format='png') 
     return base64.b64encode(stream.getvalue()) 

a mio avviso, ho:

hm =mymap() 
    strHM = hm.generate(data) 
return HttpResponse(json.dumps({"img": strHM}),content_type="application/json" ) 

ottenere errore non è JSON serializzabile. base64.b64encode (stream.getvalue()) sembra dare byte

+0

strHM è base64.b64encode (stream.getvalue()) – user903772

risposta

14

In Python 3.x, base64.b64encode accetta un oggetto bytes e restituisce un oggetto bytes.

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

È necessario convertirlo in str oggetto, utilizzando bytes.decode:

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

mi mancava '.decode()' nel mio Flask app. Grazie! – Robula

Problemi correlati