我已经建立了一个聊天室,用户可以在其中互相发送消息,但是我想添加上传文件功能,我发现了如何做到这一点:
import tkinter as tk
from tkinter import filedialog
def UploadAction(event=None):
filename = filedialog.askopenfilename()
print('Selected:', filename)
root = tk.Tk()
button = tk.Button(root, text='Open', command=UploadAction)
button.pack()
root.mainloop()
但是我不知道如何将文件发送给其他用户,以便他们可以下载
所以有人可以帮我吗
答案 0 :(得分:0)
尽管这个主题是out of topic(这个问题实际上是关于套接字而不是tkinter的),没有正确询问(请参阅how to ask),并且可能是Send a file through sockets in Python的重复,但这是一个您应该为他人着想做的简短说明。
通常来说,从压缩,文件传输,校验和等方面来看,文件传输是一个广泛的问题。我们将集中讨论如何使用sockets
在两台计算机之间一般地传输数据,因为我看到了这是你的意图。
根据您的实现,您应该向其他用户发送文件传输请求。然后,如果接受(接受/拒绝应该是其他用户的响应),则开始传输文件。
在第一步中,只需发送一个描述文件传输的标头(文件名,大小等),然后在被接受时发送内容的字节流。
您可以分别用open(file,'rb')
和open(file,'wb')
读取字节来读取和写入文件。
与元数据头进行通信,检查可用性,管理余额等是一个好习惯。
请注意,使用socket是用于数据传输的低级接口。我不会重塑;我会通过例子学习。请参阅Sending a file over TCP sockets in Python帖子,该帖子显示了一个不错的简洁代码来传输文件。该帖子的答案给出了解决他的问题(转移终止)的解决方案,但是代码通常是可以的。带有解释性的教程,只需几分钟,即可在Google搜索上进行操作。
祝您应用程序一切顺利!