【发布时间】:2023-03-05 11:18:01
【问题描述】:
我对 Python 比较陌生,但最近用它做了很多不同的事情,我非常喜欢它。但是,我遇到了以下代码的麻烦/阻塞。
import http.server
import socketserver
import glob
import random
class Server(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200, 'OK')
self.send_header('Content-type', 'html')
self.end_headers()
self.wfile.write(bytes("<html> <head><title> Hello World </title> </head> <body>", 'UTF-8'))
images = glob.glob('*.jpg')
rand = random.randint(0,len(images)-1)
imagestring = "<img src = \"" + images[rand] + "\" height = 1028 width = 786 align = \"right\"/> </body> </html>"
self.wfile.write(bytes(imagestring, 'UTF-8'))
def serve_forever(port):
socketserver.TCPServer(('', port), Server).serve_forever()
if __name__ == "__main__":
Server.serve_forever(8000)
我在这里尝试做的是从目录中的多个图像中获取随机图像并将其添加到对 Web 请求的响应中。 代码工作正常,但是当我通过浏览器访问服务器时,图像不显示。页面的 html 与预期的一样。文件的权限是 755。我还尝试在 do_GET 方法中创建一个 index.html 文件。那也没用。我的意思是 index.html 生成的很好,但是这次浏览器中的响应没有显示任何内容(甚至没有显示标题中的 hello world)。
我在这里遗漏了什么非常简单的东西吗?我在想我是否应该重载底层 SocketServer.BaseServer 的 handle_request,因为文档说你永远不应该重写 BaseHTTPServer 的 handle() 方法,而应该重写相应的 do_* 方法?
【问题讨论】:
标签: python html webserver image