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判断是否需要返回文件内容,并设置相应的响应头。
