Files
quoter/docs/how-it-works.md
Untone 7497b8c426
Some checks failed
Deploy / deploy (push) Has been skipped
CI / test (push) Failing after 20s
CI / lint (push) Successful in 7m1s
build-reconfig2
2025-09-02 10:46:51 +03:00

3.0 KiB
Raw Blame History

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

  1. Аутентификация:

    • Клиент отправляет файл на сервер с заголовком Authorization, содержащим токен. Сервер проверяет наличие и валидность токена через API ядра, определяя пользователя.
  2. Загрузка файлов:

    • Сервер обрабатывает все загружаемые файлы. Если файл является изображением, создается его миниатюра. И миниатюра, и оригинальное изображение загружаются в S3. Для остальных файлов выполняется простая загрузка в S3 без создания миниатюр.
  3. Создание миниатюр:

    • Для всех загружаемых изображений сервер автоматически создает миниатюры различных размеров (10, 40, 110, 300, 600, 800, 1400 пикселей по ширине). Миниатюры сохраняются как отдельные файлы в том же S3 bucket, что и оригинальные изображения.
  4. Определение MIME-типа и расширения файла:

    • MIME-тип и расширение файла определяются автоматически на основе имени файла и его содержимого с использованием библиотеки mime_guess.
  5. Загрузка файлов в S3:

    • Все файлы, включая миниатюры и оригиналы изображений, загружаются в указанный S3 bucket. Сформированные URL-адреса файлов возвращаются клиенту.
  6. Управление квотами:

    • Для каждого пользователя устанавливается общая квота на загрузку данных, которая составляет 5 ГБ. Перед загрузкой каждого нового файла проверяется, не превысит ли его размер текущую квоту пользователя. Если квота будет превышена, загрузка файла будет отклонена. После успешной загрузки файл и его размер регистрируются в Redis, и квота пользователя обновляется.
  7. Сохранение информации о загруженных файлах в Redis:

    • Имя каждого загруженного файла сохраняется в Redis для отслеживания загруженных пользователем файлов. Это позволяет учитывать квоты и управлять пространством, занимаемым файлами.