我的 python 网络服务器无法呈现图像
my python web server won't render images
我正在创建我的 python 网络服务器,它将获取当前目录中名为 "index" 的 html 文件,读取代码并将其作为响应发送,但我看到当我想显示图像时,它不起作用,有人可以帮助我吗?
#server.py
import socket
port = 8080
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind(('', port))
listen_socket.listen(1)
print 'Serving on port '+str(port)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
response = """\
HTTP/1.1 200 OK
Content-type:text/html\r\n\r
"""
f = open("index.html", 'r')
content = f.read()
client_connection.sendall(response+content)
client_connection.close()
这是我要显示的 html 代码
<!--index.html-->
<html>
<body>
<p>image:</p>
<img src="img.jpg" />
</body>
</html>
如果可以不直接从 url 获取图像就更好了。
提前谢谢你。
图像没有得到渲染,因为您没有发送图像,您只是在发送 html 页面。
您需要识别请求并据此发送资源。
我试图调整您的代码。它正在正确显示我的图像。
# server.py
import socket
port = 8080
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind(('', port))
listen_socket.listen(1)
print 'Serving on port ' + str(port)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
if request.split()[1] == '/':
headers = ("HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
"\r\n")
f = open("index.html", 'r')
elif request.split()[1] == '/img.jpg':
headers = ("HTTP/1.1 200 OK\r\n"
"Content-Type: image/jpeg\r\n"
"\r\n")
f = open("img.jpg", 'r')
content = f.read()
client_connection.sendall(headers + content)
client_connection.close()
如果您想要提供的不仅仅是一个页面,请查看一些 Web 框架,例如 Django、Flask 等。
我正在创建我的 python 网络服务器,它将获取当前目录中名为 "index" 的 html 文件,读取代码并将其作为响应发送,但我看到当我想显示图像时,它不起作用,有人可以帮助我吗?
#server.py
import socket
port = 8080
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind(('', port))
listen_socket.listen(1)
print 'Serving on port '+str(port)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
response = """\
HTTP/1.1 200 OK
Content-type:text/html\r\n\r
"""
f = open("index.html", 'r')
content = f.read()
client_connection.sendall(response+content)
client_connection.close()
这是我要显示的 html 代码
<!--index.html-->
<html>
<body>
<p>image:</p>
<img src="img.jpg" />
</body>
</html>
如果可以不直接从 url 获取图像就更好了。 提前谢谢你。
图像没有得到渲染,因为您没有发送图像,您只是在发送 html 页面。
您需要识别请求并据此发送资源。 我试图调整您的代码。它正在正确显示我的图像。
# server.py
import socket
port = 8080
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind(('', port))
listen_socket.listen(1)
print 'Serving on port ' + str(port)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
if request.split()[1] == '/':
headers = ("HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
"\r\n")
f = open("index.html", 'r')
elif request.split()[1] == '/img.jpg':
headers = ("HTTP/1.1 200 OK\r\n"
"Content-Type: image/jpeg\r\n"
"\r\n")
f = open("img.jpg", 'r')
content = f.read()
client_connection.sendall(headers + content)
client_connection.close()
如果您想要提供的不仅仅是一个页面,请查看一些 Web 框架,例如 Django、Flask 等。