Декодировать байты файла в do_POST (python3) - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь настроить простой HTTPServer в Python3 для загрузки файлов, и я застрял в кодировках (наверное).Вот код сервера:

class RequestHandler(http.server.BaseHTTPRequestHandler):
    def do_POST(self):
        img_bytes = self.rfile.read(int(self.headers.get('Content-Length')))
        # I DON'T KNOW WHAT TO DO HERE
        self.send_response_only(200)
        self.end_headers()

PORT = 8000
with socketserver.TCPServer(("", PORT), RequestHandler) as httpd:
    httpd.serve_forever()

Запрос на стороне клиента:

requests.post("http://server_ip:port", files={"img": open("img.jpg", "rb")})

Или

curl -d "@img.jpg" -X POST server_ip:port

Дайте обоим одинаковый результат.

Я хочу сохранить изображение, полученное на сервере, но оно имеет тип "байты", и я попытался несколько .decode(...) методов безуспешно.Что в этой переменной?Или вообще, каков правильный подход к нему?

ПРИМЕЧАНИЕ. Я сделал версию, в которой я encode() передаю свои входные данные изображения, передаю их с помощью параметра data и decode() itна стороне сервера.Но, казалось бы, некрасиво, если для этого есть параметр files.

Заранее благодарен за любую помощь или совет

...