Как я могу использовать BaseHTTPRequestHandler для пересылки (маршрутизации) клиентского запроса Get в файл локального сервера, например Apache? - PullRequest
0 голосов
/ 11 июля 2020

Допустим, есть путь «D: /test.zip», и я успешно построил сервер на основе BaseHTTPServer (сервер прослушивает http://127.0.0.1: 6000 ). Его класс обработчика выглядит следующим образом:

class MyBaseHttpHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path=="/test.zip":
            print("fetching test.zip.....")
            .....

И теперь, если я наберу URL-адрес «http://127.0.0.1: 6000 / test.zip» в моем браузере, мой браузер должен начать загрузку этого zip-файла—— точно так же, как Apache, где я могу назначить каталог, а затем пользователи могут получить доступ к каталогу, введя «http://host: порт / каталог».

(я не знаю, как переопределить do_GET метод перенаправления запроса, чтобы сделать файл доступным для клиента).

Кстати, я не хочу создавать файл html для этого, и я тоже не хотите использовать SimpleHTTPServer или Flask, Django для этого , хотя они могут сделать это хорошо.

1 Ответ

0 голосов
/ 11 июля 2020

Вы пробовали:

class MyBaseHttpHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == "/test.zip":
            self.send_response(200)
            self.send_header('Content-type', 'application/zip')
            self.end_headers()
            with open("D:\\test.zip", 'rb') as f:
                self.wfile.write(f.read())
...