【问题标题】:my python web server won't render images [closed]我的python web服务器不会渲染图像[关闭]
【发布时间】:2017-04-04 05:07:22
【问题描述】:

我正在创建我的 python web 服务器,它将获取当前目录中名为“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 获取图像,那也更好。 提前谢谢你。

【问题讨论】:

  • 你不能使用像httpserver这样的内置网络环境或像web.py这样更精简和健壮的库吗?

标签: python html image webserver


【解决方案1】:

图像没有被渲染,因为您没有发送该图像,您只是发送了 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 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 2013-12-08
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2015-12-23
    • 2022-12-21
    • 1970-01-01
    相关资源
    最近更新 更多