Закрытый файловый архив: загрузки, S3 и обработка изображений
В серии вы последовательно собираете учебный проект «Архив». Каждый урок добавляет один механизм к результату предыдущего; в архиве приведены полные накопительные состояния lesson-01—lesson-12.
Нужны основы JavaScript, HTTP и SQL, локальная среда Node.js и отдельная лабораторная база PostgreSQL. Конкретные прямые зависимости закреплены в исходниках. Архив не содержит установленной среды и разрешённого lockfile.
| Урок | Результат |
|---|---|
| 1. Модель закрытого файлового архива | Разделить карточку, байты и состояния файла. |
| 2. Политика размера и типа файла | Проверить заявку по размеру, имени и допустимым типам. |
| 3. Владелец файла и авторизация запросов | Привязать каждую операцию к аутентифицированному владельцу. |
| 4. Закрытое S3-совместимое хранилище | Подключить закрытый бакет с обязательным versioning. |
| 5. Разрешение на прямую загрузку | Создать ограниченный presigned POST и зарезервировать квоту. |
| 6. Подтверждение загруженной версии | Зафиксировать versionId, длину и задачу обработки атомарно. |
| 7. Временная ссылка на скачивание | Выдать GET только на готовую версию своего файла. |
| 8. Безопасные производные изображения | Декодировать и перекодировать JPEG/PNG/WebP в безопасный WebP. |
| 9. Фоновая обработка файлов | Добавить SQL-очередь с lease, повторами и fencing. |
| 10. Удаление файла и гонки операций | Сначала запретить новые выдачи, затем удалить версии. |
| 11. Очистка сирот и сроки хранения | Согласовать сборку сирот, неприкосновенный журнал и retention. |
| 12. Подготовка архива к выпуску | Описать эксплуатационный выпуск и восстановление без запуска. |
Скачать исходники. Выберите одно состояние вместо смешивания файлов разных уроков. Файлы схемы предназначены для пустой лабораторной базы; они не заявлены как миграции существующего приложения.
Материалы опубликованы. Учебные приложения, контейнеры, схемы и обработчики не запускались; показанные ответы и изменения описывают ожидаемый контракт. Версии и API сверены по первичной документации, а воспроизводимость среды предстоит проверить отдельно.