我有一个GET方法的代码,它将一张照片存储在MySql的blob类型字段中并返回。我想将它返回到JSON字符串中的客户端,它可以在angularjs应用程序中显示图像。
def GET(self,r):
user_data = CC.get_data(query) # holds the content of the blob field.
print type(user_data) # prints <type 'str'>
data = {'name': 'test',
'photo': user_data}
return json.dump(data)
这给了,
UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0:
invalid start byte
我发现在某些网站上最好以字节数组的形式发送照片。 我使用web.py python框架。 最好的方法是什么?
答案 0 :(得分:2)
为防止数据丢失,您可以做的最好的事情是发送二进制数据,编码为base64
。
import base64
def GET(self,r):
user_data = CC.get_data(query) # holds the content of the blob field.
data = {'name': 'test',
'photo': base64.b64encode(user_data)}
return json.dump(data)
但是,实际上不推荐通过JSON发送二进制数据,特别是在Web中。例如,您可以发送URL来下载照片。
答案 1 :(得分:0)
首先如何使用blob:
http://www.mysqltutorial.org/python-mysql-blob/
将图片发送到模板:
def imageResponseView(...)....返回回复
将网址绑定到此视图
使用<img src = "//url_to_that_view" />
来自:I have an image's HTTPResponse. How do I display it in a Django template?