feat(uploads): лимиты загрузки в env, 50 МБ на файл и 200 МБ на запись
Лимиты были захардкожены в четырёх местах фронтенда и в константах multer, из-за чего расходились с текстами ошибок на сервере. - UPLOAD_FILE_LIMIT_MB (50) и UPLOAD_TOTAL_LIMIT_MB (200) читаются из env; оба multer-конфига (upload, adminUpload) берут fileSize из них, тексты ошибок собираются из тех же констант вместо литералов - UPLOAD_REQUEST_TIMEOUT_MS снимает дефолт Node в 5 минут: считается как UPLOAD_TOTAL_LIMIT_MB * 7500, иначе 200 МБ по мобильной сети не успевают - GET /api/public-settings отдаёт upload_file_limit_mb / upload_total_limit_mb, фронтенд читает их вместо собственных констант Проверено на живом стеке: 20 МБ и 180 МБ суммарно принимаются, 55 МБ и 225 МБ отклоняются с верными сообщениями, скачивание 45 МБ из S3 совпадает по sha256 с оригиналом, api.smoketest.js — 57 PASS / 0 FAIL.
This commit is contained in:
@@ -4,6 +4,18 @@ DB_PASSWORD=случайная-длинная-строка
|
||||
# Лимит размера загружаемого на восстановление бэкапа, МБ (по умолчанию 500)
|
||||
BACKUP_UPLOAD_LIMIT_MB=500
|
||||
|
||||
# === Лимиты загрузки файлов ===
|
||||
# Максимальный размер одного файла, МБ (по умолчанию 50). Применяется ко всем
|
||||
# загрузкам: файлы проекта и фото учеников, фото групп и учеников, логотип,
|
||||
# фото модулей. Нельзя делать меньше UPLOAD_TOTAL_LIMIT_MB.
|
||||
UPLOAD_FILE_LIMIT_MB=50
|
||||
# Максимальный суммарный размер вложений одной записи, МБ (по умолчанию 200).
|
||||
UPLOAD_TOTAL_LIMIT_MB=200
|
||||
# Таймаут приёма запроса, мс. Пусто — считается автоматически
|
||||
# (UPLOAD_TOTAL_LIMIT_MB * 7500, минимум 5 минут). Увеличьте, если ученики
|
||||
# жалуются на обрыв загрузки на медленной мобильной связи.
|
||||
UPLOAD_REQUEST_TIMEOUT_MS=
|
||||
|
||||
# === Redis (кэш, rate limit, баны IP, pub/sub) ===
|
||||
# Пароль Redis. Обязателен, если Redis включён в docker-compose.
|
||||
REDIS_PASSWORD=замените-на-длинный-секрет
|
||||
|
||||
Reference in New Issue
Block a user