欢迎访问宙启技术站
智能推送

Python中使用HTTPServer()搭建一个简单的在线文件浏览器

发布时间:2023-12-26 14:49:57

在Python中,可以使用http.server模块中的HTTPServer类来搭建一个简单的在线文件浏览器。下面是一个简单的示例代码:

from http.server import HTTPServer, SimpleHTTPRequestHandler

class FileBrowserHandler(SimpleHTTPRequestHandler):
    def do_GET(self):
        # 设置响应头
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()

        # 构建文件列表页面
        html = '<html><head><title>File Browser</title></head><body>'
        html += '<h1>File Browser</h1>'
        html += '<ul>'
        for filename in self.get_files():
            html += '<li><a href="{0}">{0}</a></li>'.format(filename)
        html += '</ul>'
        html += '</body></html>'

        # 发送响应内容
        self.wfile.write(html.encode('utf-8'))

    def get_files(self):
        # 返回当前目录下的文件列表
        files = []
        for filename in os.listdir('.'):
            if os.path.isfile(filename):
                files.append(filename)
        return files

if __name__ == '__main__':
    # 设置服务器地址和端口
    server_address = ('', 8000)

    # 创建HTTP Server对象
    httpd = HTTPServer(server_address, FileBrowserHandler)

    # 启动服务器
    print('Server running at http://localhost:8000/')
    httpd.serve_forever()

上述代码定义了一个FileBrowserHandler类,继承自SimpleHTTPRequestHandler类,并重写了do_GET方法。在do_GET方法中,首先设置了响应头,然后构建了一个简单的HTML页面,通过get_files方法获取当前目录下的文件列表,并将其插入到HTML页面中。最后,使用wfile对象发送响应内容。

main函数中,我们创建了一个HTTPServer对象,传入服务器地址和FileBrowserHandler类。然后调用serve_forever方法启动服务器,监听请求并提供文件浏览功能。

要运行代码,请在终端中切换到代码所在的目录,然后执行python filename.py命令,其中filename.py是你保存代码的文件名。然后在浏览器中访问http://localhost:8000/即可看到文件浏览器界面。

需要注意的是,该示例只提供简单的文件浏览功能,没有提供文件下载功能。如果需要实现文件下载功能,可以在do_GET方法中根据请求的URL判断是否需要返回文件内容,并设置相应的响应头。