繁体   English   中英

使用python中的HTTP从服务器向客户端发送图像

[英]Sending an image from a server to client using HTTP in python

我正在创建一个处理客户端请求并通过HTTP发送数据的Web服务器。 我使用python,它非常适合文本,pdf和html文件。 当我尝试通过该服务器发送jpg图像时,客户端显示该图像,但该图像无法显示,因为客户端中包含错误。 我使用了本网站中给出的不同方法,但是失败了。 有人能帮我吗?? 图像发送部分代码如下。 提前致谢...

req = clnt.recv(102400)
a = req.split('\n')[0].split()[1].split('/')[1]
if a.split('.')[1] == 'jpg':
    path =  os.path.abspath(a)
    size = os.path.getsize(path)
    img_file = open(a, 'rb') 
    bytes_read = 0
    while bytes_read < size:
        strng = img_file.read(1024)
        if not strng:
            break
        bytes_read += len(strng)
    clnt.sendall('HTTP/1.0 200 OK\n\n' + 'Content-type: image/jpeg"\n\n' + strng)
    clnt.close()
    time.sleep(30)

每次对文件执行读取操作时,都会覆盖字符串。 如果文件大于1024字节,则将丢失先前读取的块。 最终,最后一次读取将在EOF返回一个空字符串,因此strng将最终成为空字符串。

strng = img_file.read(1024)

我认为您打算使用+= ?:

strng += img_file.read(1024)

像这样大块地读取文件并没有任何优势。 一次读取所有文件内容将消耗相同的内存量。 您可以改为:

if a.split('.')[1] == 'jpg':
    path =  os.path.abspath(a)
    with open(a, 'rb') as img_file:
        clnt.sendall('HTTP/1.0 200 OK\n\n' + 'Content-type: image/jpeg"\n\n' + img_file.read())
    clnt.close()
    time.sleep(30)

同样,严格来说,对于HTTP,这些\\n字符应为\\r\\n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM