Найти - Пользователи
Полная версия: HTTP file upload на python HTTP сервер
Начало » Web » HTTP file upload на python HTTP сервер
1
AterCattus
Есть простейший сервер на Python, обрабатывающий GET и POST запросы.
Можно найти массу одинаковых примеров в гугле.
В нем в POST принимаются данные от multipart/form-data с файлами через cgi.FieldStorage.

От сервера нужно сохранять файлы в конкретное место (может меняться для каждого конкретного файла) и собирать статистику о текущих загрузках.
Первая задача решается обработкой def make_file( self, binary=None ) для потомка cgi.FieldStorage, а вот со второй возникли проблемы.

Нужен какой-либо callback в моменты обработки куска загружаемого файла.
Накопал доп параметры для FieldStorage: file_callback, field_callback, но они только с версии 3.2, а в распоряжении есть 2.6.

Все найденные идеи и подходы работают через чистый cgi/mod_python/wcgi, где файл загружается на сервер внешним сервером, а python лишь обрабатывает итог.

Оф доки отсюда http://docs.python.org/library/internet.html]docs.python.org/library/internet.html по SocketServer, BaseHTTPServer и SimpleHTTPServer толком ничего не содержат. Больше инфы подчерпнул отсюда http://modpython.org/live/current/doc-html/pyapi-util-fstor.html , но все равно не понятно.

Делать все на “ручном” разборе запроса непосредственно при получении без каких-либо оберток конечно вариант, но ищется существующий вариант, чтобы не изобретать велосипед.

P.S. Слов много, но постарался сразу ответить на возможные вопросы.
AterCattus
Вопрос можно считать снятым - сделал “ручным” парсингом потока. Пара сотен строк со всей нужной мне логикой без каки-либо FieldStorage и т.п.
o7412369815963
AterCattus
Вопрос можно считать снятым - сделал “ручным” парсингом потока. Пара сотен строк со всей нужной мне логикой без каки-либо FieldStorage и т.п.
тогда почему именно HTTP? можно ftp,torrent или другой протокол заюзать.
AterCattus
Сервером принимаются файлы в multipart/form-data формате.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB