[英]Python 3 HTTP server image encoding
我目前正在测试从 Python 3.4 HTTP 服务器运行其他代码和文件。 所有 html 和 javascript 与任何非文本文件完全分开加载。 我认为这是由于图像文件缺乏编码。
这是我与 ip 一起使用的 python 代码并删除了端口:
from http.server import BaseHTTPRequestHandler, HTTPServer
from os import curdir, sep
import subprocess
# HTTPRequestHandler class
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
# GET
def do_GET(self):
# Send response status code
self.send_response(200)
# Attempt To Send Different Files
if self.path.startswith("/favicon.ico"):
self.send_header('Content-type','text/html')
self.end_headers()
return
# HTML
elif self.path=="/":
self.send_header('Content-type','text/html')
self.end_headers()
f = open(curdir + sep + "/Web.html")
self.wfile.write(bytes(f.read(), "utf8"))
# Image
elif self.path=="/files/picture.png":
self.send_header('Content-type','image/png')
self.end_headers()
f = open((curdir + sep + "/files/picture.png"), "rb")
self.wfile.write(f.read())
f.close()
return
def run():
print('starting server...')
# Server settings
server_address = ("LHOST", "LPORT")
httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
print('running server...')
httpd.serve_forever()
run()
和 HTML:
<html>
<title> PAGE 1 </title>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<img src="files/picture.png"/>
</body>
</html>
图像在本地加载,而不是通过 Internet。 所有其他 HTML 在 web 上工作(即端口转发不是问题)
我所做的很多研究导致 python 2 或 simplehttpserver 这主要不是我的代码,所以我不完全确定它是如何工作的,但图像位只是我的猜测,它没有工作。
# Image
elif self.path=="/files/picture.png":
self.send_header('Content-type','image/png')
self.end_headers()
f = open((curdir + sep + "/files/picture.png"), "rb")
self.wfile.write(f.read())
谢谢你的帮助
编辑:几乎现在它现在偶尔可以完美运行
我不确定这是不是答案。 但你在 if 之外做 f.close 。 但是 f 没有为 favicon 定义。 因此,如果有任何东西试图访问它,它可能会崩溃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.