【问题标题】:how to upload a file and send it to someone Tkinter如何上传文件并将其发送给某人 Tkinter
【发布时间】:2019-03-22 18:53:34
【问题描述】:

我已经创建了一个聊天室,用户可以在其中互相发送消息,但我想添加上传文件功能,我已经找到了如何做到这一点:

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()

但我不知道如何将文件发送给其他用户以便他们下载

有人可以帮帮我吗

【问题讨论】:

  • 请详细说明您的应用程序如何通过网络进行通信。通常,文件是通过 HTTP 使用远程服务器传输的,该服务器接受文件并使其可供其他用户下载。所以,答案很大程度上取决于你是如何实现东西的。除了 Tkinter 中的文件打开对话框之外,你的代码和平并没有说明任何东西。
  • @mr_mo 这是一个使用套接字和 tkinter GUI 的点对点聊天室
  • 因此您可以轻松地流式传输该文件的字节数组。使用open(file, 'rb') 并开始使用您的套接字进行流式传输。
  • @mr_mo 我将如何集成我的问题中的代码?

标签: python python-3.x tkinter


【解决方案1】:

虽然这个主题是 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 搜索上再过几分钟就会得到解释性教程。

祝你申请好运!

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多