2010-12-02 6 views
0

zeigen, habe ich ein Problem bei der Verwendung von Python (2.6) CGI, um eine MIME-Daten in Windows (Apache) zu zeigen. Um zum Beispiel ein Bild zu zeigen, hier ist mein Code: image.pyWie Mime-Daten mit Python CGI in Windows + Apache

 
#!E:/program files/Python26/python.exe 
# -*- coding: UTF-8 -*- 
data = open('logo.png','rb').read() 
print 'Content-Type:image/png;Content-Disposition:attachment;filename=logo.png\n' 
print data 

Aber es ist nicht in Windows (XP oder 7) + Apache oder IIS Dosis zu arbeiten. (Ich versuche, diesen Code auf andere Weise zu schreiben, und versuchen Sie auch andere Dateiformat, jpg und rar, aber keine korrekte Ausgabe, die Ausgangsdaten scheint Unordnung in den ersten Zeilen.)

Und ich teste diesen Code in Linux + Apache, und es ist in Ordnung!

 
#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 
data = open('logo.png','rb').read() 
print 'Content-Type:image/png;Content-Disposition:attachment;filename=logo.png\n' 
print data 

Ich fühle mich einfach verwirrt, warum es nicht in Windows funktioniert. Kann mir jemand Hilfe und Rat geben?

Antwort

0

Jetzt weiß ich, wie dieses Problem zu lösen:

  • Für Windows + IIS: Während die Anwendungszuordnung (IIS) hinzufügen, C:\Python20\python.exe -u %s %s schreiben. Ich habe so geschrieben c:\Python26\python.exe %s %s, dass falsche MIME-Daten erstellen wird. Und "-u" bedeutet ungepuffertes binäres stdout und stderr.
  • Für Windows + Apache: Fügen Sie in der ersten Zeile des Python-Skripts #!E:/program files/Python26/python.exe -u hinzu.

Vielen Dank Ignacio Vazquez-Abrams alle gleich!

2

Eine neue Zeile zwischen den einzelnen Kopfzeilen. Zwei Zeilenumbrüche zwischen den Headern und dem Textkörper. Und pass auf deine Zeilenenden auf.

print 'Content-Type:image/png' 
print 'Content-Disposition:attachment;filename=logo.png' 
print 
+0

Vielen Dank für Ihren Rat. Aber ich habe viele Arten des Schreibens versucht, benutze verschiedene '/ n' oder '/ r/n', mit 'attachment' oder ohne, aber alles scheiterte an meinem Computer (chinesische Sprache). Ich frage mich, ob Sie das erfolgreich auf Ihrem Computer testen? Ich denke, das ist ein Problem von Windows-System. –

+0

Das hat mein Problem gelöst, danke Ignacio! – Ian