Skip to content

arncpp/BigFiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Передача больших файлов

Гайд по запуску проекта

Как запустить проект через консоль

Первый этап: установка python и flask.
Если у вас уже установлен python 3.10 и вы можете самостоятельно установить библиотеку flask — пропустите этот этап

1. Скачайте python3 с официального сайта и установите его. 2. Во время установки обязательно поставьте галочку "Add Python 3.x to PATH". add path screenshot

3. Когда установка закончится запустите консоль нажать комбинацию Win + R.

Второй этап: скачивание и запуск проекта.

1. Скачайте проект с github любым удобным для вас способом.

2. В консоли перейдите в папку.

3. Запустите проект.

Команды, необходимые для запуска через консоль:

git clone https://github.com/arncpp/KIS_task.git

pip install flask

pip install requests

cd

python client.py

Поднять тестовый сервер на localhost можно так:

FLASK_APP=server.py flask

Что это?

У пользователей часто возникает потребность передать большие файлы. Важно, чтобы это не занимало больших ресурсов времени, а также при передаче файлы не повредились. К счастью, у нас есть высокие технологии, чтобы решить эту проблему.

При запуске программы пользователь вводит название файла, который хочет передать и количество потоков.

Как это работает?

Сервер реализован с помощью микро-фреймворка Flask. Мы возлагаем на него всего две задачи:

  1. Не забывать, от кого он получает файл.
  2. Сохранять переданный файл и проверять его на целостность.

Первая проблема в решается довольно просто: мы храним IP-адреса пользователей и соответствующую им сессию UploadSession. Также у нас имеется все данные о пользователях, которые когда-либо передавали свои файлы. Как только пользователь передал файл, мы удаляем его сессию.

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

Пользователь же может себе поменять адрес сервара (main_url в urls.py).

Пример работы:

Input:
file_name test.jpg
count_threads 5
transfer_file
exit
Output:
Your file has been uploaded successfully!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages