storage_files

0

Описание

Языки

  • Python63%
  • HTML32,9%
  • CSS4,1%
6 месяцев назад
6 месяцев назад
6 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
7 месяцев назад
README.md

Файловое хранилище на Django

Платформа для безопасного хранения и управления файлами с возможностью обмена между пользователями.

Возможности

  • 📁 Загрузка файлов - Загружайте файлы любого типа с удобной организацией
  • 🔐 Аутентификация - Безопасная система входа и регистрации
  • 👥 Обмен файлами - Делитесь файлами с другими пользователями
  • 🌐 Публичные файлы - Создавайте публично доступные файлы
  • 📊 Статистика - Отслеживайте количество скачиваний
  • 🏷️ Категории - Организуйте файлы по категориям
  • 🔒 Права доступа - Настройка прав просмотра и скачивания
  • 📱 Адаптивный дизайн - Работает на всех устройствах

Установка

1. Клонирование репозитория

2. Создание виртуального окружения

3. Активация виртуального окружения

Windows:

Linux/Mac:

4. Установка зависимостей

5. Настройка переменных окружения

Создайте файл

.env
в корне проекта:

6. Выполнение миграций

7. Создание суперпользователя

8. Запуск сервера

Откройте браузер и перейдите по адресу: http://127.0.0.1:8000

Использование

Веб-интерфейс

  1. Вход в систему - Используйте созданного суперпользователя
  2. Загрузка файлов - Нажмите кнопку "Загрузить файл" на главной странице
  3. Управление файлами - Просматривайте, скачивайте и удаляйте файлы
  4. Обмен файлами - Делитесь файлами с другими пользователями через API

API Endpoints

Файлы

  • GET /api/files/
    - Список файлов пользователя
  • POST /api/files/
    - Загрузка нового файла
  • GET /api/files/{id}/
    - Детали файла
  • PUT /api/files/{id}/
    - Обновление файла
  • DELETE /api/files/{id}/
    - Удаление файла
  • GET /api/files/{id}/download/
    - Скачивание файла

Категории

  • GET /api/categories/
    - Список категорий
  • POST /api/categories/
    - Создание категории

Обмен файлами

  • GET /api/shares/
    - Список общих файлов
  • POST /api/shares/
    - Поделиться файлом
  • GET /api/shared-files/
    - Файлы, которыми поделились с вами
  • GET /api/public-files/
    - Публичные файлы

Примеры использования API

Загрузка файла

Скачивание файла

Поделиться файлом

Структура проекта

storeFiles/ ├── file_storage/ # Основные настройки Django │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ ├── wsgi.py │ └── asgi.py ├── files/ # Приложение для работы с файлами │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── models.py │ ├── serializers.py │ ├── urls.py │ └── views.py ├── templates/ # HTML шаблоны │ ├── base.html │ └── files/ │ ├── home.html │ └── welcome.html ├── static/ # Статические файлы │ └── css/ │ └── style.css ├── media/ # Загруженные файлы ├── manage.py ├── requirements.txt └── README.md

Модели данных

StoredFile

  • title
    - Название файла
  • description
    - Описание
  • file
    - Путь к файлу
  • file_size
    - Размер файла в байтах
  • file_type
    - MIME тип файла
  • category
    - Категория файла
  • is_public
    - Публичный ли файл
  • download_count
    - Количество скачиваний
  • owner
    - Владелец файла

FileCategory

  • name
    - Название категории
  • description
    - Описание категории

FileShare

  • file
    - Файл для обмена
  • shared_with
    - Пользователь, с которым делятся
  • shared_by
    - Пользователь, который поделился
  • permission
    - Права доступа (view/download)
  • expires_at
    - Срок действия ссылки

Безопасность

  • Все файлы загружаются в отдельные папки для каждого пользователя
  • Проверка прав доступа при скачивании файлов
  • CSRF защита для веб-форм
  • Аутентификация через Django REST Framework
  • Валидация типов и размеров файлов

Развертывание в продакшене

  1. Установите переменную
    DEBUG=False
    в настройках
  2. Настройте
    ALLOWED_HOSTS
    для вашего домена
  3. Используйте PostgreSQL или MySQL вместо SQLite
  4. Настройте веб-сервер (Nginx + Gunicorn)
  5. Настройте SSL сертификат
  6. Используйте CDN для статических файлов

Лицензия

MIT License

Поддержка

Если у вас возникли вопросы или проблемы, создайте issue в репозитории проекта.