如何使用Python的SimpleHTTPServer模块进行文件下载功能
发布时间:2023-12-24 15:00:40
Python中的SimpleHTTPServer模块提供了一个简单的HTTP服务器,可以用于快速搭建一个简单的文件下载服务器。以下是使用Python的SimpleHTTPServer模块实现文件下载功能的方法以及一个使用例子。
使用SimpleHTTPServer模块实现文件下载功能的步骤如下:
1. 导入SimpleHTTPServer模块:
import SimpleHTTPServer import SocketServer
2. 创建一个自定义的处理器类,继承自SimpleHTTPServer.SimpleHTTPRequestHandler,并重写do_GET方法:
class FileDownloadHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/download':
self.send_response(200)
self.send_header('Content-Disposition', 'attachment; filename="example.txt"')
self.end_headers()
file = open('example.txt', 'rb')
self.wfile.write(file.read())
file.close()
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
3. 创建一个服务器对象,并指定服务器地址和端口:
PORT = 8000
Handler = FileDownloadHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
4. 启动服务器:
print "Serving at port", PORT httpd.serve_forever()
完整的使用例子如下:
import SimpleHTTPServer
import SocketServer
class FileDownloadHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/download':
self.send_response(200)
self.send_header('Content-Disposition', 'attachment; filename="example.txt"')
self.end_headers()
file = open('example.txt', 'rb')
self.wfile.write(file.read())
file.close()
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
PORT = 8000
Handler = FileDownloadHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "Serving at port", PORT
httpd.serve_forever()
在这个例子中,服务器监听8000端口,当访问根路径(http://localhost:8000)时,会返回一个简单的文件下载页面(HTML默认提供的),当访问/download路径时,会返回一个名为example.txt的文件进行下载。
当运行这个脚本后,在浏览器中打开http://localhost:8000,即可看到简单的文件下载页面。点击下载链接,即可下载example.txt文件。
