Эта статья показывает отправку файла в CGI с использованием C ++. Программа позаботится о преобразовании стандартного вывода в двоичный файл:
int main()
{
#if _WIN32
// Standard I/O is in text mode by default; since we intend
// to send binary image data to standard output, we have to
// set it to binary mode.
// Error handling is tricky to say the least, so we have none.
_fmode = _O_BINARY;
if (_setmode(_fileno(stdin), _fmode) == -1) {}
if (_setmode(_fileno(stdout), _fmode) == -1) {}
#endif
Вы можете сделать это в Python. Здесь - решение для Windows:
import sys
if sys.platform == "win32":
import os, msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
Здесь - это код, специфичный для python 3.x:
Стандартные потоки в текстовом режиме
по умолчанию. Написать или прочитать двоичный файл
данные к ним, использовать основную
двоичный буфер. Например, написать
байты в стандартный вывод, используйте
sys.stdout.buffer.write (b'abc '). С помощью
io.TextIOBase.detach () потоки могут быть
сделал бинарный по умолчанию. Эта функция
устанавливает stdin и stdout в двоичный файл:
def make_streams_binary():
sys.stdin = sys.stdin.detach()
sys.stdout = sys.stdout.detach()
Позже: я также думаю, что вы должны быть в состоянии UU64-кодировать ваш jpeg и отправлять его по проводам в виде текста с соответствующей длиной контента и типом контента, но я никогда не делал HTTP на этом уровне. Тебе придется поискать это.