CGI Grafik anzeigen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
firlej
User
Beiträge: 2
Registriert: Sonntag 11. Juni 2006, 15:21
Kontaktdaten:

Sonntag 11. Juni 2006, 17:12

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Sonntag 11. Juni 2006, 20:05

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
firlej
User
Beiträge: 2
Registriert: Sonntag 11. Juni 2006, 15:21
Kontaktdaten:

Sonntag 11. Juni 2006, 22:15

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
Antworten