将MySQL blob内容作为json响应发送

时间:2016-05-26 15:03:06

标签: python mysql json rest blob

我有一个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框架。 最好的方法是什么?

2 个答案:

答案 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?