Re: Problem Displaying Pics
http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 TIA, V On Wed, Oct 7, 2009 at 4:11 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 14:05:25 -0700, Victor Subervi victorsube...@gmail.com wrote: print 'Content-Type: image/jpeg' print 'Content-Encoding: base64' print print content.encode('base64') I did change it to text/plain, but I don't know how I'm supposed to manually decode it. Yes, it printed out a bunch of crap to the screen. I've gotten that far before, and once I read Adobe something, so yes, it's an image. TIA, V Hopefully the 'crap' you're getting is the base64-encoded representation of your binary image -- you should be able to use Python to decode that, and then use any image viewer to verify that the JPEG is sound. Can you remind us of the URL where that code (with the text/plain content type) is running? On Wed, Oct 7, 2009 at 3:52 PM, Rami Chowdhury rami.chowdh...@gmail.com wrote: On Wed, 07 Oct 2009 13:24:28 -0700, Victor Subervi victorsube...@gmail.com wrote: I did that. In fact, just to make things easier, I wrote out exactly what is supposed to be rendered, as below: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() db = MySQLdb.connect(host, user, passwd, db) cursor= db.cursor() sql = select pic1 from products where id='1'; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg'''# Only print one line Content-Encoding: base64 ''' print print content.encode('base64') Just to reiterate what Gabriel and Carsten have pointed out, I'd suggest changing the last few lines of the script, as the comments below indicate: print '''Content-Type: image/jpeg''' # One header line print '''Content-Encoding: base64''' # Another header line. Note *no* blank line between them print# Blank line signals the end of the headers print content.encode(base64) # Base64-encoded content comes *after* the blank line If you include extra blank lines after the headers, the browser will misunderstand where the binary image data begins, and so will see a malformed JPEG. If this doesn't work, I suggest changing the content-type header to text/plain and trying to manually decode and check the image data to ensure it's valid. On Wed, Oct 7, 2009 at 2:47 PM, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Wed, 07 Oct 2009 12:00:13 -0300, Victor Subervi victorsube...@gmail.com escribió: print '''Content-Type: image/jpeg ''' print print content On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl- p...@yahoo.com.arwrote: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) ^ - the actual image data -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
I have come to the conclusion that this has absolutely nothing to do with the code. The problem is eNom. I have had so many problems with this provider specifically concerning their python interpreter that I actually filed a complaint against them with the BBB, which they still didn't resolve. Now that I'm back in the states and making money, I've bought space on another server that I'm building. Let me spend my time building that, and I believe all these silly problems will go away. I will start a new thread if I'm wrong. Thank you all for your help! V On Thu, Oct 8, 2009 at 11:43 AM, Gabriel Genellina gagsl-...@yahoo.com.arwrote: En Thu, 08 Oct 2009 12:30:16 -0300, Victor Subervi victorsube...@gmail.com escribió: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 On Wed, Oct 7, 2009 at 4:11 PM, Rami Chowdhury rami.chowdh...@gmail.com wrote: On Wed, 07 Oct 2009 14:05:25 -0700, Victor Subervi victorsube...@gmail.com wrote: print 'Content-Type: image/jpeg' print 'Content-Encoding: base64' print print content.encode('base64') Are you sure this is your actual code? py import urllib py data = urllib.urlopen( http://13gems.com/stxresort/cart/getpic1.py?id=1x=1;).read() py data[:30] 'Content-Encoding: base64\n\n\n/9j' py data[-30:] 'XdjTJvaaF5fvfMVgbUM+gatZXFzb\n\n' 1) The Content-Encoding line is taken as part of the response entity (the picture data), but should be part of the header. I bet you have a blank line after Content-Type. 2) Note the \n\n at the end py data = data[27:-2] py decoded = data.decode(base64) py open(test.jpg,wb).write(decoded) I tried to open test.jpg, but it's corrupt. py len(decoded) 65535 py decoded[:30] '\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x02\x01\x00H\x00H\x00\x00\xff\xe1 \xadExif\x00\x00' Very suspicious file size... Looks like a jpeg image that was truncated at that size. See whether it is already corrupt in the database and repair it (you're using a data type large enough to hold the image, aren't you?) After fixing the database, you can omit the unnecesary base64 encoding; anyway I'd add a Content-Length header to avoid that spurious \n at the end. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Tue, 06 Oct 2009 13:26:19 -0700, Victor Subervi victorsube...@gmail.com wrote: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. Going to that URL, my browser now tries to render an HTML page, and I can now see the 'Content-Type: image/jpeg' string being printed into the HTML source. Have you tried removing the 'Content-Type: text/html' header, with the new triple-quoted syntax? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
I took out the line in question (with text/html). Now it prints to screen the url. It did that before. Strange. Any other ideas? TIA, V On Tue, Oct 6, 2009 at 3:40 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Tue, 06 Oct 2009 13:26:19 -0700, Victor Subervi victorsube...@gmail.com wrote: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. Going to that URL, my browser now tries to render an HTML page, and I can now see the 'Content-Type: image/jpeg' string being printed into the HTML source. Have you tried removing the 'Content-Type: text/html' header, with the new triple-quoted syntax? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
En Tue, 06 Oct 2009 17:26:19 -0300, Victor Subervi victorsube...@gmail.com escribió: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) - the actual image data A Content-Type of text/html is just *wrong* for an image... -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
Gabriel, don't you remember fighting this through with me a year or two ago? It worked just fine back then, but now the same code doesn't work! Go figure! We've tweaked it to this point: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content Your comments are very much appreciated. TIA, V On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl-...@yahoo.com.arwrote: En Tue, 06 Oct 2009 17:26:19 -0300, Victor Subervi victorsube...@gmail.com escribió: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) - the actual image data A Content-Type of text/html is just *wrong* for an image... -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Wed, 07 Oct 2009 06:37:08 -0700, Victor Subervi victorsube...@gmail.com wrote: I took out the line in question (with text/html). Now it prints to screen the url. It did that before. Strange. Any other ideas? TIA, V Looking at the output, it seems the reason for this (for me) is that Firefox can't find the image or any alt text for it, so it's just using the image URL. Are you certain the image data (i.e. the 'content' string) is correct, and being encoded correctly in the output? On Tue, Oct 6, 2009 at 3:40 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Tue, 06 Oct 2009 13:26:19 -0700, Victor Subervi victorsube...@gmail.com wrote: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. Going to that URL, my browser now tries to render an HTML page, and I can now see the 'Content-Type: image/jpeg' string being printed into the HTML source. Have you tried removing the 'Content-Type: text/html' header, with the new triple-quoted syntax? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
Yes it is. I have had it print to screen already, and there is data in the database. V On Wed, Oct 7, 2009 at 10:03 AM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 06:37:08 -0700, Victor Subervi victorsube...@gmail.com wrote: I took out the line in question (with text/html). Now it prints to screen the url. It did that before. Strange. Any other ideas? TIA, V Looking at the output, it seems the reason for this (for me) is that Firefox can't find the image or any alt text for it, so it's just using the image URL. Are you certain the image data (i.e. the 'content' string) is correct, and being encoded correctly in the output? On Tue, Oct 6, 2009 at 3:40 PM, Rami Chowdhury rami.chowdh...@gmail.com wrote: On Tue, 06 Oct 2009 13:26:19 -0700, Victor Subervi victorsube...@gmail.com wrote: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. Going to that URL, my browser now tries to render an HTML page, and I can now see the 'Content-Type: image/jpeg' string being printed into the HTML source. Have you tried removing the 'Content-Type: text/html' header, with the new triple-quoted syntax? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Wed, 07 Oct 2009 09:38:09 -0700, Victor Subervi victorsube...@gmail.com wrote: Yes it is. I have had it print to screen already, and there is data in the database. V If you're confident that the data is correct and hasn't been corrupted, then I'm afraid I'm out of ideas. Perhaps you could try transmitting it as base64, which might make it more robust in transmission and easier to decode and find errors locally? You'd just need to change the end of your script to read: print '''Content-Type: image/jpeg Content-Encoding: base64 ''' print print content.encode('base64') HTH, Rami On Wed, Oct 7, 2009 at 10:03 AM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 06:37:08 -0700, Victor Subervi victorsube...@gmail.com wrote: I took out the line in question (with text/html). Now it prints to screen the url. It did that before. Strange. Any other ideas? TIA, V Looking at the output, it seems the reason for this (for me) is that Firefox can't find the image or any alt text for it, so it's just using the image URL. Are you certain the image data (i.e. the 'content' string) is correct, and being encoded correctly in the output? On Tue, Oct 6, 2009 at 3:40 PM, Rami Chowdhury rami.chowdh...@gmail.com wrote: On Tue, 06 Oct 2009 13:26:19 -0700, Victor Subervi victorsube...@gmail.com wrote: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. Going to that URL, my browser now tries to render an HTML page, and I can now see the 'Content-Type: image/jpeg' string being printed into the HTML source. Have you tried removing the 'Content-Type: text/html' header, with the new triple-quoted syntax? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
Well, since the code is automatically generated, it printed this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' Content-Encoding: base64 print print content.encode('base64') which threw this error: [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Traceback (most recent call last): [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/apache.py, line 299, in HandlerDispatch\n result = object(req) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/cgihandler.py, line 96, in handler\n imp.load_module(module_name, fd, path, desc) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /var/www/vhosts/ 13gems.com/httpdocs/stxresort/cart/getpic1.py, line 24 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Content-Encoding: base64 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: ^ [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: SyntaxError: invalid syntax Ideas? TIA, V On Wed, Oct 7, 2009 at 12:00 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 09:38:09 -0700, Victor Subervi victorsube...@gmail.com wrote: Yes it is. I have had it print to screen already, and there is data in the database. V If you're confident that the data is correct and hasn't been corrupted, then I'm afraid I'm out of ideas. Perhaps you could try transmitting it as base64, which might make it more robust in transmission and easier to decode and find errors locally? You'd just need to change the end of your script to read: print '''Content-Type: image/jpeg Content-Encoding: base64 ''' print print content.encode('base64') HTH, Rami On Wed, Oct 7, 2009 at 10:03 AM, Rami Chowdhury rami.chowdh...@gmail.com wrote: On Wed, 07 Oct 2009 06:37:08 -0700, Victor Subervi victorsube...@gmail.com wrote: I took out the line in question (with text/html). Now it prints to screen the url. It did that before. Strange. Any other ideas? TIA, V Looking at the output, it seems the reason for this (for me) is that Firefox can't find the image or any alt text for it, so it's just using the image URL. Are you certain the image data (i.e. the 'content' string) is correct, and being encoded correctly in the output? On Tue, Oct 6, 2009 at 3:40 PM, Rami Chowdhury rami.chowdh...@gmail.com wrote: On Tue, 06 Oct 2009 13:26:19 -0700, Victor Subervi victorsube...@gmail.com wrote: The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. Going to that URL, my browser now tries to render an HTML page, and I can now see the 'Content-Type: image/jpeg' string being printed into the HTML source. Have you tried removing the 'Content-Type: text/html' header, with the new
Re: Problem Displaying Pics
On Wed, 07 Oct 2009 10:50:00 -0700, Victor Subervi victorsube...@gmail.com wrote: Well, since the code is automatically generated, it printed this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' Content-Encoding: base64 print print content.encode('base64') which threw this error: [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Traceback (most recent call last): [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/apache.py, line 299, in HandlerDispatch\n result = object(req) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/cgihandler.py, line 96, in handler\n imp.load_module(module_name, fd, path, desc) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /var/www/vhosts/ 13gems.com/httpdocs/stxresort/cart/getpic1.py, line 24 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Content-Encoding: base64 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: ^ [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: SyntaxError: invalid syntax Ideas? TIA, V I'm sorry, I don't understand how the code is being auto-generated? Is there no way to place the 'Content-Encoding' header inside the triple-quoted string, where it should go? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
My misunderstanding. Here's the new code: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg Content-Encoding: base64 ''' print print content.encode('base64') Unfortunately, the same result of printing the url. V On Wed, Oct 7, 2009 at 12:56 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 10:50:00 -0700, Victor Subervi victorsube...@gmail.com wrote: Well, since the code is automatically generated, it printed this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' Content-Encoding: base64 print print content.encode('base64') which threw this error: [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Traceback (most recent call last): [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/apache.py, line 299, in HandlerDispatch\n result = object(req) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/cgihandler.py, line 96, in handler\n imp.load_module(module_name, fd, path, desc) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /var/www/vhosts/ 13gems.com/httpdocs/stxresort/cart/getpic1.py, line 24 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Content-Encoding: base64 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: ^ [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: SyntaxError: invalid syntax Ideas? TIA, V I'm sorry, I don't understand how the code is being auto-generated? Is there no way to place the 'Content-Encoding' header inside the triple-quoted string, where it should go? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Wed, 07 Oct 2009 11:51:13 -0700, Victor Subervi victorsube...@gmail.com wrote: My misunderstanding. Here's the new code: print '''Content-Type: image/jpeg Content-Encoding: base64 ''' Ah, sorry, I wasn't clear -- Content-Encoding is a header, and needs to go with Content-Type, before the newlines. So print '''Content-Type: image/jpeg Content-Encoding: base64 ''' HTH, Rami On Wed, Oct 7, 2009 at 12:56 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 10:50:00 -0700, Victor Subervi victorsube...@gmail.com wrote: Well, since the code is automatically generated, it printed this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' Content-Encoding: base64 print print content.encode('base64') which threw this error: [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Traceback (most recent call last): [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/apache.py, line 299, in HandlerDispatch\n result = object(req) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /usr/lib64/python2.4/site-packages/mod_python/cgihandler.py, line 96, in handler\n imp.load_module(module_name, fd, path, desc) [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: File /var/www/vhosts/ 13gems.com/httpdocs/stxresort/cart/getpic1.py, line 24 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: Content-Encoding: base64 [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: ^ [Wed Oct 07 10:47:42 2009] [error] [client 66.248.168.98] PythonHandler mod_python.cgihandler: SyntaxError: invalid syntax Ideas? TIA, V I'm sorry, I don't understand how the code is being auto-generated? Is there no way to place the 'Content-Encoding' header inside the triple-quoted string, where it should go? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
En Wed, 07 Oct 2009 12:00:13 -0300, Victor Subervi victorsube...@gmail.com escribió: print '''Content-Type: image/jpeg ''' print print content On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl- p...@yahoo.com.arwrote: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) ^ - the actual image data -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
I did that. In fact, just to make things easier, I wrote out exactly what is supposed to be rendered, as below: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() db = MySQLdb.connect(host, user, passwd, db) cursor= db.cursor() sql = select pic1 from products where id='1'; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg Content-Encoding: base64 ''' print print content.encode('base64') I even changed the image/jpeg to text/html to see if the image would print out the binary, and it did, so I'm calling the image correctly, just not rendering the binary as an image. V On Wed, Oct 7, 2009 at 2:47 PM, Gabriel Genellina gagsl-...@yahoo.com.arwrote: En Wed, 07 Oct 2009 12:00:13 -0300, Victor Subervi victorsube...@gmail.com escribió: print '''Content-Type: image/jpeg ''' print print content On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl- p...@yahoo.com.arwrote: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) ^ - the actual image data -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
Victor Subervi wrote: [...] print '''Content-Type: image/jpeg Content-Encoding: base64 ''' [...] You have a spurious blank line between those header lines. HTH, -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
I tried these combinations: print '''Content-Type: image/jpeg Content-Encoding: base64 ''' print print content.encode('base64') and print '''Content-Type: image/jpeg Content-Encoding: base64 ''' print content.encode('base64') Neither worked :( V On Wed, Oct 7, 2009 at 3:40 PM, Carsten Haese carsten.ha...@gmail.comwrote: Victor Subervi wrote: [...] print '''Content-Type: image/jpeg Content-Encoding: base64 ''' [...] You have a spurious blank line between those header lines. HTH, -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Wed, 07 Oct 2009 13:24:28 -0700, Victor Subervi victorsube...@gmail.com wrote: I did that. In fact, just to make things easier, I wrote out exactly what is supposed to be rendered, as below: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() db = MySQLdb.connect(host, user, passwd, db) cursor= db.cursor() sql = select pic1 from products where id='1'; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg'''# Only print one line Content-Encoding: base64 ''' print print content.encode('base64') Just to reiterate what Gabriel and Carsten have pointed out, I'd suggest changing the last few lines of the script, as the comments below indicate: print '''Content-Type: image/jpeg''' # One header line print '''Content-Encoding: base64''' # Another header line. Note *no* blank line between them print# Blank line signals the end of the headers print content.encode(base64) # Base64-encoded content comes *after* the blank line If you include extra blank lines after the headers, the browser will misunderstand where the binary image data begins, and so will see a malformed JPEG. If this doesn't work, I suggest changing the content-type header to text/plain and trying to manually decode and check the image data to ensure it's valid. On Wed, Oct 7, 2009 at 2:47 PM, Gabriel Genellina gagsl-...@yahoo.com.arwrote: En Wed, 07 Oct 2009 12:00:13 -0300, Victor Subervi victorsube...@gmail.com escribió: print '''Content-Type: image/jpeg ''' print print content On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl- p...@yahoo.com.arwrote: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) ^ - the actual image data -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
print 'Content-Type: image/jpeg' print 'Content-Encoding: base64' print print content.encode('base64') I did change it to text/plain, but I don't know how I'm supposed to manually decode it. Yes, it printed out a bunch of crap to the screen. I've gotten that far before, and once I read Adobe something, so yes, it's an image. TIA, V On Wed, Oct 7, 2009 at 3:52 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 13:24:28 -0700, Victor Subervi victorsube...@gmail.com wrote: I did that. In fact, just to make things easier, I wrote out exactly what is supposed to be rendered, as below: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() db = MySQLdb.connect(host, user, passwd, db) cursor= db.cursor() sql = select pic1 from products where id='1'; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg'''# Only print one line Content-Encoding: base64 ''' print print content.encode('base64') Just to reiterate what Gabriel and Carsten have pointed out, I'd suggest changing the last few lines of the script, as the comments below indicate: print '''Content-Type: image/jpeg''' # One header line print '''Content-Encoding: base64''' # Another header line. Note *no* blank line between them print# Blank line signals the end of the headers print content.encode(base64) # Base64-encoded content comes *after* the blank line If you include extra blank lines after the headers, the browser will misunderstand where the binary image data begins, and so will see a malformed JPEG. If this doesn't work, I suggest changing the content-type header to text/plain and trying to manually decode and check the image data to ensure it's valid. On Wed, Oct 7, 2009 at 2:47 PM, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Wed, 07 Oct 2009 12:00:13 -0300, Victor Subervi victorsube...@gmail.com escribió: print '''Content-Type: image/jpeg ''' print print content On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl- p...@yahoo.com.arwrote: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) ^ - the actual image data -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Wed, 07 Oct 2009 14:05:25 -0700, Victor Subervi victorsube...@gmail.com wrote: print 'Content-Type: image/jpeg' print 'Content-Encoding: base64' print print content.encode('base64') I did change it to text/plain, but I don't know how I'm supposed to manually decode it. Yes, it printed out a bunch of crap to the screen. I've gotten that far before, and once I read Adobe something, so yes, it's an image. TIA, V Hopefully the 'crap' you're getting is the base64-encoded representation of your binary image -- you should be able to use Python to decode that, and then use any image viewer to verify that the JPEG is sound. Can you remind us of the URL where that code (with the text/plain content type) is running? On Wed, Oct 7, 2009 at 3:52 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Wed, 07 Oct 2009 13:24:28 -0700, Victor Subervi victorsube...@gmail.com wrote: I did that. In fact, just to make things easier, I wrote out exactly what is supposed to be rendered, as below: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() db = MySQLdb.connect(host, user, passwd, db) cursor= db.cursor() sql = select pic1 from products where id='1'; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg'''# Only print one line Content-Encoding: base64 ''' print print content.encode('base64') Just to reiterate what Gabriel and Carsten have pointed out, I'd suggest changing the last few lines of the script, as the comments below indicate: print '''Content-Type: image/jpeg''' # One header line print '''Content-Encoding: base64''' # Another header line. Note *no* blank line between them print# Blank line signals the end of the headers print content.encode(base64) # Base64-encoded content comes *after* the blank line If you include extra blank lines after the headers, the browser will misunderstand where the binary image data begins, and so will see a malformed JPEG. If this doesn't work, I suggest changing the content-type header to text/plain and trying to manually decode and check the image data to ensure it's valid. On Wed, Oct 7, 2009 at 2:47 PM, Gabriel Genellina gagsl-...@yahoo.com.ar wrote: En Wed, 07 Oct 2009 12:00:13 -0300, Victor Subervi victorsube...@gmail.com escribió: print '''Content-Type: image/jpeg ''' print print content On Wed, Oct 7, 2009 at 9:51 AM, Gabriel Genellina gagsl- p...@yahoo.com.arwrote: That's still wrong. The output should be: - a line containing Content-Type: image/jpeg - a blank line (no more!) ^ - the actual image data -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Tue, 06 Oct 2009 12:19:56 -0700, Victor Subervi victorsube...@gmail.com wrote: Hi; I have the following archaic code that worked just fine for another site. It is called with the following url: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print 'Content-Type: text/html' ^^^ I believe this is the problem line. It's telling the browser to expect HTML, not an image. Remove this, and the later Content-Type header that's being printed (Content-Type: image/jpeg) should take effect. -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
I remember going round and round on this issue before until I finally got it right. I haven't changed the code. It worked before. I just tried your update and it gave me the same result :( Any other ideas? TIA, V On Tue, Oct 6, 2009 at 2:24 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Tue, 06 Oct 2009 12:19:56 -0700, Victor Subervi victorsube...@gmail.com wrote: Hi; I have the following archaic code that worked just fine for another site. It is called with the following url: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print 'Content-Type: text/html' ^^^ I believe this is the problem line. It's telling the browser to expect HTML, not an image. Remove this, and the later Content-Type header that's being printed (Content-Type: image/jpeg) should take effect. -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
On Tue, 06 Oct 2009 12:37:17 -0700, Victor Subervi victorsube...@gmail.com wrote: I remember going round and round on this issue before until I finally got it right. I haven't changed the code. It worked before. I just tried your update and it gave me the same result :( Any other ideas? TIA, V I'm afraid changing the 'Content-type' header to be correct (which it's still not, by the way; you need to be printing '\r\n\r\n' after the content-type, to signal the end of the headers) is all I can think of. Apart from that, could it be a browser issue? When I went to the URL you provided in your first email, for instance, my browser (Opera 9.6 on Windows Vista) was expecting an image, as was Firefox 3.1 (again on Windows). However, neither seem to read valid data for the image, and both report it as 0x0. Could you give us more information on what has changed? Have you upgraded the version of Python on the server? Have you changed the webserver serving your scripts? Have you changed the back-end database at all? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list
Re: Problem Displaying Pics
The code in question is generated automatically from another script. I took your idea of the \r\n\r\n and added triple quoting and now it prints out this: #!/usr/local/bin/python import cgitb; cgitb.enable() import MySQLdb import cgi import sys,os sys.path.append(os.getcwd()) from login import login user, passwd, db, host = login() form = cgi.FieldStorage() picid = int(form['id'].value) x = int(form['x'].value) pics = {1:'pic1',2:'pic2',3:'pic3',4:'pic4',5:'pic5',6:'pic6'} pic = pics[x] print '''Content-Type: text/html ''' db = MySQLdb.connect(host=host, user=user, passwd=passwd, db=db) cursor= db.cursor() sql = select + pic + from products where id=' + str(picid) + '; cursor.execute(sql) content = cursor.fetchall()[0][0].tostring() cursor.close() print '''Content-Type: image/jpeg ''' print print content To answer your questions, I have no idea what eNom has done to their servers, which is where the other site was hosted (never went live), but am in the process of building on DreamHost, who seems to be a FAR better service than eNom, whom I actually had to report to the BBB and they never fixed or acknowledged very obvious problems. At any rate, the above code gets the browser to print out all the binary garbage that should translate into an image (you can look: http://13gems.com/stxresort/cart/getpic1.py?id=1x=1 ). Any more ideas would be helpful. TIA, V On Tue, Oct 6, 2009 at 2:48 PM, Rami Chowdhury rami.chowdh...@gmail.comwrote: On Tue, 06 Oct 2009 12:37:17 -0700, Victor Subervi victorsube...@gmail.com wrote: I remember going round and round on this issue before until I finally got it right. I haven't changed the code. It worked before. I just tried your update and it gave me the same result :( Any other ideas? TIA, V I'm afraid changing the 'Content-type' header to be correct (which it's still not, by the way; you need to be printing '\r\n\r\n' after the content-type, to signal the end of the headers) is all I can think of. Apart from that, could it be a browser issue? When I went to the URL you provided in your first email, for instance, my browser (Opera 9.6 on Windows Vista) was expecting an image, as was Firefox 3.1 (again on Windows). However, neither seem to read valid data for the image, and both report it as 0x0. Could you give us more information on what has changed? Have you upgraded the version of Python on the server? Have you changed the webserver serving your scripts? Have you changed the back-end database at all? -- Rami Chowdhury Never attribute to malice that which can be attributed to stupidity -- Hanlon's Razor 408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD) -- http://mail.python.org/mailman/listinfo/python-list