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