Novice вопрос re. BaseHTTPRequestHandler и получение данных ...Как получить файлы через класс BaseHTTPRequestHandler Python?
Я использовал BaseHTTPRequestHandler для получения строк JSON, переданных в качестве данных в URI. Теперь мне нужно получить строки JSON и файлы ascii. Как я могу сказать, что получил данные JSON и отдельный плоский файл? Как получить доступ к данным в файле?
Что делать, если я получил несколько файлов?
BTW, я просто провел тест по телефону мой URI из Почтальон & увидеть следующие заголовки:
headers: Host: localhost:6081
Content-Type: application/x-www-form-urlencoded
User-Agent: python-requests/2.2.1 CPython/3.4.0 Linux/3.13.0-35-generic
Accept: */*
Accept-Encoding: gzip, deflate, compress
Content-Length: 403
спасибо!
Бен
Судя по этим заголовкам, ваш клиент отправляет файлы. См. [Этот вопрос] (http://stackoverflow.com/questions/8659808/how-does-http-file-upload-work) для общего обзора работы загрузки файлов. (В вашем случае, поскольку вы используете JSON, а не www-form-urlencoded, детали будут немного отличаться, но это все равно будет MIME-многостраничным сообщением.) Итак, вам нужно исправить это, прежде чем беспокоиться о на стороне сервера. – abarnert
В любом случае, 'BaseHTTPRequestHandler', особенно версия 2.x, делает это довольно неуклюжим. IIRC, «правильный» способ сделать это - вручную использовать материал MIME-parsing в пакете «email» для обработки тела, но есть хакерский способ сделать это, заменив «email.message.Message» на ' MessageClass' в вашем подклассе и с использованием атрибута 'headers', как если бы это был конверт. – abarnert
На самом деле, выкапывая какой-то старый код, вам нужно передать обертку вокруг 'mail.message.Message', которая имеет конструктор, который действует как' mimetools.Message'. В принципе, он должен принять аргумент 'fp' и использовать его для подачи данных в свой суперкласс. Надеюсь, этого достаточно, чтобы вы начали? – abarnert