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

使用Python的SimpleHTTPServer模块搭建一个简易的图片服务器

发布时间:2023-12-25 22:07:42

SimpleHTTPServer模块是Python标准库里的一个简单的HTTP服务器模块,可以快速搭建一个基本的服务器,用于展示静态内容。

首先,我们需要导入SimpleHTTPServer模块:

import SimpleHTTPServer

然后,我们创建一个简单服务器类,并继承BaseHTTPServer模块下的BaseHTTPRequestHandler类。在这个类里,我们需要在do_GET方法中实现处理HTTP GET请求的逻辑:

class ImageServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path.endswith(".jpg") or self.path.endswith(".png"):
            # 处理图片请求,设置响应头
            self.send_response(200)
            self.send_header("Content-type", "image/jpg")
            self.end_headers()
            
            # 打开并发送图片文件
            with open(self.path[1:], "rb") as f:
                self.wfile.write(f.read())
        else:
            # 使用默认处理逻辑
            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

在do_GET方法中,我们会判断请求的文件类型是否为.jpg或.png,并根据需要设置对应的Content-type响应头。如果是图片文件,我们会打开文件并发送文件内容;如果不是图片文件,我们使用父类SimpleHTTPRequestHandler的do_GET方法处理。

最后,我们创建一个HTTP服务器对象,并使用这个自定义的请求处理类来处理HTTP请求:

def run(server_class=BaseHTTPServer.HTTPServer,
        handler_class=ImageServerHandler, port=8000):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print 'Starting server on port %d...' % port
    httpd.serve_forever()

if __name__ == '__main__':
    run()

此时,运行上述代码,就可以在本地的8000端口搭建一个简易的图片服务器。图片文件需要和代码文件在同一目录下,并使用.jpg或.png为扩展名。

例如,我们有一张图片文件名为example.jpg,我们可以在浏览器中输入http://localhost:8000/example.jpg来访问这个图片。服务器会根据请求的文件类型发送对应的响应头和文件内容。

这样,我们就使用SimpleHTTPServer模块搭建了一个简易的图片服务器,并实现了处理图片请求的功能。当然,SimpleHTTPServer模块还提供了其他一些功能,可以用来处理更复杂的HTTP请求,可以根据实际需求进行扩展。