Как показать данные MIME с помощью Python CGI в Windows + Apache - PullRequest
0 голосов
/ 02 декабря 2010

Я столкнулся с проблемой при использовании Python (2.6) CGI для отображения данных MIME в Windows (Apache). Например, чтобы показать изображение, вот мой код: image.py

#!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. Кто-нибудь может дать мне некоторую помощь и совет?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

Одна новая строка между каждым заголовком. Два перевода строки между заголовками и телом. И следите за окончаниями строк.

print 'Content-Type:image/png'
print 'Content-Disposition:attachment;filename=logo.png'
print
0 голосов
/ 17 марта 2011

Теперь я знаю, как решить эту проблему:

  • Для Windows + IIS: При добавлении сопоставления приложений (IIS) напишите C:\Python20\python.exe -u %s %s. Раньше я писал так c:\Python26\python.exe %s %s, что будет создавать неправильные данные MIME. И "-u" означает небуферизованные двоичные stdout и stderr.
  • Для Windows + Apache: Добавьте #!E:/program files/Python26/python.exe -u в первую строку скрипта Python.

Спасибо Игнасио Васкес-Абрамсу все равно!

...