【问题标题】:Send file to client without type it's name and file extension将文件发送到客户端,无需输入名称和文件扩展名
【发布时间】: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


【解决方案1】:

无需在程序中硬编码文件名,您可以在运行代码时通过命令行参数传递它。

这是我实现类似东西的 GitHub 的链接:

Reliable File Transfer over UDP

希望这会有所帮助!

【讨论】:

  • 您有什么建议或例子吗?我需要例子。它的代码。所以我可以理解如何做到这一点。
  • 点击我发布的链接。它将重定向到我的 github 帐户。您可以在我的存储库中找到代码。检查自述文件,你会发现通过命令行传递参数的说明。
猜你喜欢
  • 2012-12-19
  • 2016-12-06
  • 1970-01-01
  • 2023-03-21
  • 2016-05-04
  • 1970-01-01
  • 2013-12-19
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多