Seite 1 von 1

CGI Grafik anzeigen

Verfasst: Sonntag 11. Juni 2006, 17:12
von firlej
Hallo,

würde gern per cgi wie folgt ein Bild zur Anzeige bringen:

Code: Alles auswählen

#!/usr/bin/python

print "HTTP/1.0 200 Document follows\n"
print "content-type: image/jpg\n\n"

fd=open("bild.jpg","rb")
inhalt=fd.read()
fd.close()
print inhalt
Datei liegt als bild.cgi vor(Server unterstützt nur Endung .cgi). Beim Aufruf über den Browser per http://xyz.de/cgi-bin/bild.cgi kommt nur das PopUp "Öffnen von bild.cgi" mit der Auswahl "Öffnen mit.../Auf Festplatte speichern". In der gespeicherten Datei ist dann die Ausgabe von "print inhalt".
Gleiches Script in Perl bringt das Bild zur Anzeige. Weiß jemand wo das Problem im Python Script liegt?

Gruß
Firlej

Re: CGI Grafik anzeigen

Verfasst: Sonntag 11. Juni 2006, 20:05
von gerold
firlej hat geschrieben:Weiß jemand wo das Problem im Python Script liegt?
Hi Firlej

Ein Tipp von mir, wenn das CGI-Skript nicht so will wie es soll:
Ändere den Content-Type auf text/html und aktiviere cgitb. Damit bekommst du eine recht gute Fehlermeldung ausgegeben. Auch wenn das Bild dann nicht mehr als Bild erscheint, aber das ist vorerst ja unwichtig.

So meine ich das:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
print "Content-Type: text/html"
print

import cgi
import cgitb; cgitb.enable()

# Hier kann der Code getestet werden...
Und so funktioniert es bei mir. Nachdem ich den Arbeitspfad (mit os.chdir) auf den Ordner des Skriptes gesetzt habe.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

print "Content-Type: image/jpg;"
print

import os
import os.path

# In den aktuellen Ordner wechseln
os.chdir(os.path.split(__file__)[0])

fd = open("bild.jpg","rb")
inhalt = fd.read()
fd.close()

print inhalt
mfg
Gerold
:-)

Re: CGI Grafik anzeigen

Verfasst: Sonntag 11. Juni 2006, 22:15
von firlej
Hallo Gerold,

Danke für Deine Hilfe. Das Problem bei mir war das Newline in:

Code: Alles auswählen

print "content-type: image/jpg\n\n" 
geändert in Deine Version:

Code: Alles auswählen

print "Content-Type: image/jpg;"
print 
und es funktioniert. Wieso auch immer :?


Gruß
Firlej