将存储在数据库中的BLOB转换为HTML网站上的图像

use*_*223 5 html python database blob image

这是我的第一个问题.

我让用户将自己的图像上传到数据库.该图像存储为BLOB.

我成功地做到了这一点.我正在使用MySQL作为数据库.

我遇到问题的部分是在调用时将BLOB显示为网站上的图像.

现在只显示二进制数据,显示许多奇怪的符号.我认为这是HTTP标题的问题.现在它在:

print "Content-Type: text/html"
Run Code Online (Sandbox Code Playgroud)

我试过了:

print "Content-Type: image/jpeg"
Run Code Online (Sandbox Code Playgroud)

我使用Python连接数据库并编写HTML.

编辑:代码:

def showFile():

    # do SQL to retrieve blob where filename
    conn, cursor = getConnectionAndCursor()
    sql = """
    select data
    from upload 
    where id=1
    """
    cursor.execute(sql)
    data = cursor.fetchone()
    blob = data[0]

    print "<hr>"
    print "This is what I'm trying"
    print """<img  src="data:image/jpeg;base64,%s/>""" % data

######################################################################
if __name__ == "__main__":

    form = cgi.FieldStorage()

    if "show_file" in form:
        print "Content-Type: text/html"
        print 
        printHeaders("Image upload example")
        showFile()
        printFooter()
Run Code Online (Sandbox Code Playgroud)

rep*_*cus 6

根据其编码方式,您还可以使用数据URI作为图像.如果它们被编码为base64 PNG,这样的东西可能会起作用.

<img  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />
Run Code Online (Sandbox Code Playgroud)

正如@Alok所说,您可能需要先将其从二进制blob转换为base64,然后使用数据URI.


Alo*_*wal 5

图像以二进制格式存储在数据库中,因此一旦使用解码功能到达服务器将其恢复为图像

image.decode('base64')
Run Code Online (Sandbox Code Playgroud)

这会将您的 blob 转换为图像