Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting BLOB, stored on a database, to an image on an HTML website

This is my first question.

I am having users upload their own image to a database. That image is stored as a BLOB.

I was able to do this successfully. I am using MySQL for the database.

The part I am having trouble with is displaying that BLOB as an image on the website when its called upon.

Right now only the Binary data, lots of weird symbols are being displayed. I think its a problem with the HTTP header. Right now its in :

print "Content-Type: text/html"

I've tried:

print "Content-Type: image/jpeg"

I am using Python to connect with the database and write the HTML.

Edit: Code:

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()
like image 420
user2332223 Avatar asked Apr 29 '13 13:04

user2332223


1 Answers

Depending on how its encoded, you can also possibly just use a Data URI for the image. Something like this might work if they are encoded as base64 PNGs.

<img  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

As @Alok says, you might need to first convert it from binary blob to base64, then use the Data URI.

like image 52
reptilicus Avatar answered Nov 14 '22 23:11

reptilicus