Displaying images stored as binary in MySQL

Benjamin Niemann b.niemann at betternet.de
Mon Aug 16 05:41:35 EDT 2004


>>>How can this be done? Images are stored in a LONGBLOB field. When I
>>>try to display them, it prints out the binary data as it is...
>>
>>Display where? On local screen, in a webbrowser?
>>Assuming the first one, see post by Tom.
>>Assuming the second one (you're writing a cgi,mod_python... program), 
>>did you set the content-type in the http header correctly?
> 
> In a webbrowser...
> this is my code...
> 
> #!/usr/bin/python2.3
> 
> print 'Content-Type:image/jpeg\n\n'
You must use '\r\n' to terminate header lines. I'm not really sure, but 
maybe there should also be a spacing between ':' and 'image/jpeg'...
If you are using e.g. FireFox as a browser, you can user 'View Page 
Info' to see, if the browser correctly understands, what you are trying 
to tell it ('Type' should say 'image/jpeg').

> import blakHtml, sys
> sys.stderr = sys.stdout
> import MySQLdb
> import urllib
> import cgi
> import time
> prevPg=blakHtml.HTMLDocument()
> newConnection=MySQLdb.connect(host='localhost', user='blaktyger', \
>                                            passwd='linux4ever', db='photoFamille')
> curseur=newConnection.cursor()
> 
> sqlCmdFr="""SELECT *  FROM photo"""
> curseur.execute(sqlCmdFr)
> resultats = curseur.fetchall()
> p=0
> for val in resultats:
>     p=p+1
>     #print '<img src=" ' + val[5]+ ' " ' +' >' THIS DOES NOT WORK
>     print val[5]
> newConnection.close()
> I know there is no HTML code but this is just a test...
val[5] contains the raw image data (not a path), correct? Does 'photo' 
contains more than one image? Concatenating several images into one 
bytestream, is definitly not what you want.




More information about the Python-list mailing list