python socket无法读取pic

时间:2015-04-09 16:40:18

标签: python sockets python-2.7

一个奇怪的问题。我可以看到text_content。但我看不到pic_content,我不知道为什么。使用chrome有一个错误。“资源解释为图像,但转移MIME类型text / html:”我发现也许我的if else代码不起作用.pic必须是image / jpg可以输出..但我不知道为什么以及怎么做......

import socket
#Address
#httpq server

HOST = ''
PORT = 8000

#prepare HTTP response

#start line head and body
text_content = '''HTTP/1.x 200 OK
Content-Type: text/html
<html>
<head>
<title>WOW</titile>
</head>

<p>WOW,python server</p>
<img src="test.jpg/">
</html>
'''

#read picture ,put into HTTP format
f = open('test.jpg','rb')
pic_content = '''
HTTP/1.x 200 OK
Content-Type: image/jpg
'''
pic_content = pic_content + f.read()
f.close()

#cofigure socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
#infinite loop,server forever
while True:
    #3:maxinum number of requests waitting
    s.listen(3)
    conn, addr = s.accept()
    request = conn.recv(1024)
    method = request.split(' ')[0]
    src    = request.split(' ')[1]

    #deal with GET method
    if method =='GET':
        #URL
        if src =='/test.jpg':
            content = pic_content
        else:content = text_content

        print 'Connected by',addr
        print 'Request is:', request
        conn.sendall(content)
    #close connection
    conn.close()

1 个答案:

答案 0 :(得分:0)

您在HTTP标头和正文之间缺少空白行(Content-Type之后)。

由于您已经记录了请求,因此您可以看到浏览器正在请求带有无关尾部斜杠的test.jpg/。删除它,它的工作原理。