Обслуживание двоичного файла от веб-сервера к клиенту

Обычно, когда я хочу передать клиенту текстовый файл веб-сервера, я сделал следующее

import cgi

print "Content-Type: text/plain"
print "Content-Disposition: attachment; filename=TEST.txt"
print

filename = "C:\\TEST.TXT"
f = open(filename, 'r')
for line in f:
    print line

Прекрасно работает с файлом ANSI. Однако, скажем, у меня есть двоичный файл a.exe (этот файл находится в секретном пути веб-сервера, и у пользователя не будет прямого доступа к этому пути к каталогу). Я хочу использовать аналогичный метод для передачи. Как я могу это сделать?

  • Какой тип содержимого мне следует использовать?
  • Похоже, что при использовании печати на стороне клиента получено поврежденное содержимое. Каков правильный метод?

Я использую следующий код.

#!c:/Python27/python.exe -u

import cgi

print "Content-Type: application/octet-stream"
print "Content-Disposition: attachment; filename=jstock.exe"
print

filename = "C:\\jstock.exe"
f = open(filename, 'rb')
for line in f:
    print line

Однако, когда я сравниваю загруженный файл с исходным файлом, мне кажется, что после каждой отдельной строки есть лишний пробел (или больше).

alt text

5
задан systempuntoout 23 December 2010 в 09:36
поделиться