我想在我的后续处理程序上提供一些帮助:
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_HEAD(client):
client.send_response(200)
client.send_header("Content-type", "text/html")
client.end_headers()
def do_GET(client):
if client.path == "/":
client.send_response(200)
client.send_header("Content-type", "text/html")
client.end_headers()
client.wfile.write(load('index.html'))
def load(file):
with open(file, 'r') as file:
return encode(str(file.read()))
def encode(file):
return bytes(file, 'UTF-8')
我有这个,函数load()
是文件中的其他人。通过我的HTTP处理程序发送HTML页面似乎正在工作,但我如何发送图像?我如何编码以及我应该使用Content-type
?
非常感谢帮助!
(PS:如果我连接到我的http服务器,我希望在浏览器中看到发送的图像)
答案 0 :(得分:9)
对于PNG图像,您必须将内容类型设置为" image / png"。对于jpg:" image / jpeg"。
可以找到其他内容类型here。
编辑:是的,我在第一次编辑时忘了编码。
答案是:你不要!从文件加载图像时,它已经是正确的编码。
我读到了你的编解码器问题:问题是,我在你的加载函数中看到了。不要尝试对文件内容进行编码。
您可以使用二进制数据:
def load_binary(file):
with open(file, 'rb') as file:
return file.read()
答案 1 :(得分:3)
如Juergen所述,您必须设置相应的内容类型。 我发现的这个示例可能会对您有所帮助:https://github.com/tanzilli/playground/blob/master/python/httpserver/example2.py
示例在Python 2中,但更改应该是次要的。
啊,最好使用self
代替client
- >请参阅PEP 8,Python的样式指南