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

时间:2015-09-17 07:34:59

标签: python html

我正在尝试创建一个简单的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()

是否需要进行某种特殊编码才能显示图像?

请注意,我无法使用任何外部模块。

1 个答案:

答案 0 :(得分:0)

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

client_connection.send('HTTP/1.1 200 OK\nContent-Type: text/html\n\n')

之前

client_connection.sendall(http_response.encode('UTF-8'))