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()
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With