2010-12-02 39 views
0

我在使用python(2.6)cgi在Windows(apache)中顯示mime數據時遇到了一個問題。 例如,爲了顯示圖像,這裏是我的代碼: image.py如何在windows + apache中使用python cgi顯示mime數據

 
#!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 

但劑量不會工作在Windows(XP或7)+ Apache或IIS。我嘗試以不同的方式編寫這些代碼,並嘗試其他文件格式,JPG和RAR,但沒有正確的輸出,輸出數據似乎在開始行無序。)

而我測試這些代碼在Linux + Apache中,它是好的!

 
#!/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 

我只是感到困惑,爲什麼它不能在windows中工作。 有人能給我一些幫助和建議嗎?

回答

0

現在我知道如何解決這個問題:

  • 對於Windows + IIS: 同時加入了應用程序映射(IIS),寫C:\Python20\python.exe -u %s %s。我曾經寫過這樣的c:\Python26\python.exe %s %s,那會造成錯誤的啞劇數據。 「-u」表示無緩衝的二進制stdout和stderr。
  • 對於windows + Apache: 將#!E:/program files/Python26/python.exe -u添加到python腳本的第一行。

感謝Ignacio Vazquez-Abrams都一樣!

2

每個標題之間有一個換行符。標題和正文之間有兩條新行。並觀看你的線路結局。

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

謝謝您的建議。但是我嘗試了很多種這樣的寫法,使用不同的'/ n'或'/ r/n','附件'或者沒有,但是在我的計算機(中文)中都失敗了。我想知道你在計算機上成功測試過嗎?我認爲這是一個Windows系統的問題。 – 2010-12-02 06:36:26