Как получить файлы через класс Python BaseHTTPRequestHandler?
Начинающий вопрос ре. BaseHTTPRequestHandler и получение данных...
Я использовал BaseHTTPRequestHandler для получения строк JSON, переданных в качестве данных на мой URI. Теперь мне нужно получить как строки JSON, так и файлы ascii. Как я могу сказать, что я получил как данные JSON, так и отдельный плоский файл? Как мне получить доступ к данным в файле?
Что если я получил несколько файлов?
Кстати, я только что выполнил тест, позвонив по моему 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
Спасибо!
Бен
1 ответ
Ответ в библиотеке CGI. Обратитесь к следующему сообщению Stackru: Простой Python WebServer. Второй ответ в этом посте был наиболее полезным для нас.
Вот некоторый тестовый код, который может оказаться полезным для распечатки того, что происходит за кулисами, особенно если вы пытаетесь получить несколько файлов в одном посте:
print("command: " + self.command + "\npath: " + self.path + "\nrequest_version: " \
+ self.request_version + "\nheaders: " + str(self.headers))
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': self.headers['Content-Type'],
})
print("\nform:", str(form))
print("\nform['file'].filename:", form['file'].filename)
filename = form['file'].filename
data = form['file'].file.read()
open("/tmp/%s" % filename, "wb").write(data)
print('\ndata:', data)