как загрузить файл и отправить его кому-то в Tkinter - PullRequest
0 голосов
/ 22 марта 2019

Я создал чат, где пользователи могут отправлять сообщения друг другу, но я хочу добавить функцию загрузки файла, я нашел, как это сделать:

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

но я не знаю, как отправить файл другим пользователям, чтобы они могли его скачать

так может кто-нибудь, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 22 марта 2019

Хотя эта тема не по теме (этот вопрос на самом деле касается сокетов, а не tkinter), неправильно задана (см. как спросить ) и, возможно, дубликат Отправьте файл через сокеты в Python , вот краткое описание того, что вы должны были сделать для других.

Вообще говоря, передача файлов - это широкая тема, от сжатия, передачи файлов, контрольных сумм и т. Д. Мы сконцентрируемся на том, как передавать данные в целом между двумя компьютерами, используя sockets, потому что я вижу, что это ваше намерение.

В зависимости от вашей реализации, вы должны отправить запрос другому пользователю на передачу файла. Затем, если он принят (принятие / отклонение должно быть ответом другого пользователя), начните передачу файла. На первом этапе просто отправьте заголовок, описывающий передачу файла (имя файла, размер и т. Д.). Затем, когда он будет принят, вы отправите поток байтов содержимого. Вы можете читать файлы в байтах с open(file,'rb') и open(file,'wb') для чтения / записи соответственно. Рекомендуется общаться с метаданными в заголовках, проверять доступность, управлять балансом и т. Д.

Обратите внимание, что использование socket является низкоуровневым интерфейсом для передачи данных. Я не буду изобретать заново; Я бы учился на примерах. См. Отправка файла через TCP-сокеты в публикации Python , в которой показан хороший лаконичный код для передачи файлов. Решение его проблемы (прекращение перевода) дается в ответах на этот пост, но код в целом в порядке. Еще несколько минут поиска в Google приведут к объясненным учебникам.

Удачи вам в приложении!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...