无法使用python在浏览器中显示图像

无法使用python在浏览器中显示图像,python,html,Python,Html,我正在尝试创建一个简单的web浏览器。 我有一个index.html文件放在我的本地文件中。我正在尝试启动客户端-服务器连接,然后在浏览器中显示html文件 我能够打开index.html文件并读取它的内容,除了一些内容。有些链接指向本地目录中的图像,但在浏览器中单击该链接时,它不会打开 下面是示例代码 HOST, PORT = '', 8888 listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) list

我正在尝试创建一个简单的web浏览器。 我有一个index.html文件放在我的本地文件中。我正在尝试启动客户端-服务器连接,然后在浏览器中显示html文件

我能够打开index.html文件并读取它的内容,除了一些内容。有些链接指向本地目录中的图像,但在浏览器中单击该链接时,它不会打开

下面是示例代码

    HOST, PORT = '', 8888

listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)

listen_socket.listen(1)
print('Serving HTTP on port %s ...' % PORT)
os.chdir("some directory where index.html is present")
open_file=open('index.html','r')
print(os.getcwd())
#http_response=open_file.read()

""" sample html code where image exists
<image src="./images/welcome.png" height=180px />
The index.html is perfectly fine, but i'm not able to display the images
in browser"""


while True:
    client_connection, client_address = listen_socket.accept()
    request = client_connection.recv(1024)
    print(request.decode('utf-8'))

    http_response = open_file.read()



    client_connection.sendall((str.encode(http_response)))
    client_connection.close()
主机,端口='',8888
listen\u socket=socket.socket(socket.AF\u INET,socket.SOCK\u流)
侦听\u socket.setsockopt(socket.SOL\u socket,socket.SO\u REUSEADDR,1)
侦听\u socket.bind((主机、端口))
监听插座。监听(1)
监听插座。监听(1)
打印('在端口%s上提供HTTP…'%port)
chdir(“index.html所在的某个目录”)
open_file=open('index.html','r')
打印(os.getcwd())
#http_response=open_file.read()
“”“存在图像的示例html代码”
html非常好,但我无法显示图像
在浏览器“”中
尽管如此:
客户端\连接,客户端\地址=侦听\套接字。接受()
request=client_connection.recv(1024)
打印(请求解码('utf-8'))
http_response=open_file.read()
client_connection.sendall((str.encode(http_响应)))
客户端连接。关闭()
显示图像时是否需要进行某种特殊的编码


请注意,我不能使用任何外部模块。

对于要视为有效html文件的内容,需要将被视为某种规则集的所需内容发送到类似于解码器的浏览器,以实现它应该将其视为具有HTTP/1.1协议,并且内容类型为html,因此添加:

client\u connection.send('HTTP/1.1 200 OK\n内容类型:text/html\n\n')

以前


client\u connection.sendall(http\u response.encode('UTF-8'))

通过运行套接字并监听套接字,您试图实现什么?您正在通过浏览器访问此html?是的,我正在通过浏览器访问它您是否尝试使用图像的绝对路径?是的,即使我这样做了,我尝试放置一个图像文件,然后使用绝对路径,但仍然收到一个错误,说在打开html时未收到数据。您如何告诉浏览器通过发送此文件将其视为html?您不应该在
客户端连接之前发送,
客户端连接.send('HTTP/1.1 200 OK\n内容类型:text/html\n\n')
发送(
client\u connection.sendall)((str.encode(HTTP\u response)))
?嗨,Monk,这里有我需要更改的编码吗?因为我得到了下面的错误。“TypeError:'str'不支持缓冲区接口”您使用的是哪一版本的python?我使用的是python v3.4您可以尝试最后一行作为
client\u connection.sendall(http\u response.encode('UTF-8'))
。Python3.x字符串与Python2.x不同。请转换为字节或尝试上述操作。我目前没有任何东西来测试这个语法。只是更新了答案以反映python 3版本