![](/img/trans.png)
[英]Sending an Image from Client to Server using Sockets in Python
[英]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.