使用python套接字编程将文件发送到浏览器
我正在尝试使用python(仅限socket编程)向客户端(浏览器:Chrome)发送一个文件(mp3)。我的问题是,文件正在下载,而不是在浏览器上进行流式传输。我无法理解我错在哪里。请让我知道 另外,下载的音频文件没有损坏,我可以播放音频 这是我的密码:使用python套接字编程将文件发送到浏览器,python,sockets,http,web,server,Python,Sockets,Http,Web,Server,我正在尝试使用python(仅限socket编程)向客户端(浏览器:Chrome)发送一个文件(mp3)。我的问题是,文件正在下载,而不是在浏览器上进行流式传输。我无法理解我错在哪里。请让我知道 另外,下载的音频文件没有损坏,我可以播放音频 这是我的密码: import socket import os import time from encodings.base64_codec import base64_encode serversocket = socket.socket(socket.
import socket
import os
import time
from encodings.base64_codec import base64_encode
serversocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port=8000
def createServer():
serversocket.bind(("",port))
serversocket.listen(5)
file=open('music.mp3',"rb")
z=file.read()
var=len(z)
file.close()
(clientsocket, address) = serversocket.accept()
clcommand=clientsocket.recv(1024).decode('utf8')
header="HTTP/1.1 200 OK"
header1="Content-Type: audio/mpeg"
header2="Content-Length: {}".format(var)
blank="\r\n"
sendt=header+header1+header2+blank
clientsocket.send(sendt.encode())
file=open("music.mp3",'rb')
z=file.read(512)
while (z):
try:
clientsocket.send(z)
z=file.read(512)
except:
print("done sending")
exit()
createServer()
通过在浏览器上显示音频文件,您能做些什么?您使用的是哪个浏览器?我的意思是在浏览器上播放音频文件,我使用的是Chrome。
sendt=header+header1+header2+blank
。。。标题行还需要\r\n
分隔符-包括最后一个分隔符,以便在内容之前有一个\r\n\r\n
。此外,使用sendall
而不是send
,因为send
不能保证发送您要求发送的所有内容。此外,您还可以编写一个小python脚本,让客户端而不是浏览器来查看您得到了什么。通过在浏览器上显示音频文件,您做了什么?您使用的是哪个浏览器?我的意思是在浏览器上播放音频文件,我使用的是Chrome。sendt=header+header1+header2+blank
。。。标题行还需要\r\n
分隔符-包括最后一个分隔符,以便在内容之前有一个\r\n\r\n
。此外,使用sendall
而不是send
,因为send
不能保证发送您要求发送的所有内容。此外,您还可以编写一个小python脚本,让客户端而不是浏览器看到您得到了什么。