【发布时间】:2019-05-19 13:39:32
【问题描述】:
我正在通过套接字发送文件。服务器到客户端。服务器读取文件并发送。客户端收到文件并将其写入并使用 file.write() 保存但我必须在收到文件之后/之前输入文件名和文件扩展名。我不想输入文件名、扩展名。还有另一种方法来接收文件而不这样做。 这是我的代码:
# server send file to client.
Def send_file_to_client(conn):
File = open("video.mp4", 'rb')
Conn.send(File)
print("file send.")
# client receive file from server.
Def recvfile():
file = open("video.mp4", 'wb')
while True:
r = soc.recv(4096)
if not r: break
file.write(r)
print("file download")
【问题讨论】:
-
我不清楚你的问题是什么。您发送的不是文件而是数据(文件的内容)。如果您想让这些数据与文件名相关联,您必须以某种方式提供它。如果您信任服务器不仅提供文件的内容,还提供文件名,那么让服务器通过套接字发送文件名并让客户端读取并使用它。如果您不信任服务器,您可以向您的程序提供文件名,或者让您的程序自己创建一些唯一的文件名。
-
@Steffen Ullrich 哦!我发送的文件数据(文件内容)实际上不是文件。那么如何发送/接收文件而不是文件的内容?你有什么建议和例子吗?
标签: python python-3.x sockets filestream file-transfer