2017-04-03 1 views
0

"index"라는 현재 디렉토리에서 html 파일을 가져 와서 코드를 읽고 응답으로 보내면 내 파이썬 웹 서버를 만들었지 만 이미지를 표시하고 싶었지만 작동하지 않았습니다. 누군가 제발 나를 도울 수 있습니까? 여기 내 python 웹 서버에서 이미지를 렌더링하지 않습니다

#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() 

내가

<!--index.html--> 
<html> 
<body> 
<p>image:</p> 
<img src="img.jpg" /> 
</body> 
</html> 

이 URL을 직접 이미지를 얻기없이 할 수 있다면 그것은 바람직 것입니다 표시하고자하는 HTML 코드입니다. 미리 감사드립니다.

+0

'httpserver'와 같은 내장 웹 환경이나 'web.py'와 같은 라이브러리는 더 간소화되고 견고합니까? –

답변

0

당신은 단지 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() 

장고, 플라스크 등 일부 웹 프레임 워크를보고 한 페이지 이상을 제공하려는 경우

관련 문제