📁 Локальный файловый сервер для обмена файлами по сети

Простой и удобный способ быстро передать файлы между компьютером и смартфоном без флешек, мессенджеров и облачных хранилищ — это запустить временный локальный файловый сервер прямо на своём ПК.

📌 Где можно использовать?

  • Передача файлов между ПК и телефоном по Wi-Fi
  • Обмен файлами в офисе без USB-носителей и Dropbox
  • Создание временного общего доступа в локальной сети

🚀 Как запустить

Создайте файл file_server.py со следующим содержимым:

import http.server
import socket
import socketserver
import argparse
import os

parser = argparse.ArgumentParser(description="📁 Локальный файловый сервер")
parser.add_argument("-p", "--port", type=int, default=8000, help="Порт (по умолчанию: 8000)")
parser.add_argument("-d", "--directory", default=".", help="Каталог для раздачи (по умолчанию: текущая)")
args = parser.parse_args()

os.chdir(args.directory)

class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *a, **kw):
        super().__init__(*a, directory=args.directory, **kw)

def get_local_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(("8.8.8.8", 80))
        ip = s.getsockname()[0]
    except Exception:
        ip = "localhost"
    finally:
        s.close()
    return ip

with socketserver.TCPServer(("", args.port), Handler) as httpd:
    print(f"🌍 Сервер запущен: http://{get_local_ip()}:{args.port}")
    print(f"📁 Раздаётся каталог: {os.path.abspath(args.directory)}")
    print("⛔ Нажмите Ctrl+C для остановки")
    httpd.serve_forever()

✅ Как использовать

  1. Скопируйте скрипт на свой ПК.
  2. Откройте терминал в нужной папке (ту, которую хотите раздавать).
  3. Запустите сервер: python3 file_server.py Или с указанием порта и каталога: python3 file_server.py -p 8080 -d /путь/к/каталогу
  4. В терминале отобразится локальный IP-адрес. Например: 🌍 Сервер запущен: http://192.168.1.42:8000
  5. Откройте браузер на другом устройстве (например, телефоне) и введите этот адрес.

📱 Пример сценария: передача файла на смартфон

  1. Компьютер подключён по кабелю к роутеру.
  2. Смартфон подключён к той же Wi-Fi сети.
  3. На ПК запущен сервер.
  4. На телефоне открываем http://192.168.1.42:8000 в браузере.
  5. Выбираем и скачиваем нужные файлы.

Важно: Убедитесь, что фаервол не блокирует входящие подключения к Python или выбранному порту (например, 8000).

🛠 Частые проблемы и решения

  • Ошибка “Address already in use” — предыдущий сервер не завершён. Завершите его через Ctrl+C или выполните: lsof -i :8000 kill PID
  • Телефон не может открыть страницу — проверьте, что он в той же сети Wi-Fi, и IP указан правильно.
  • VPN активен — IP может быть подменён (например, 12.3.17.2). Отключите VPN или используйте команду ip a для получения локального IP вручную.

🏁 Заключение

Такой локальный сервер — отличный способ быстро раздать или получить файлы по сети без лишнего софта. Он особенно полезен в поездках, офисе, школе, на мероприятиях или просто дома.