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

如何使用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文件。