"""safe_name — санитизация имени файла (защита от path traversal).""" def safe_name(name: str) -> str: """Санитизировать имя файла: защита от path traversal, сохраняя подпапки. Запрещает '..' и абсолютные пути; нормализует слэши. Возвращает "" если имя пустое или небезопасное. """ if not name: return "" name = name.replace("\\", "/") parts = [p for p in name.split("/") if p and p != "."] if not parts or any(p == ".." for p in parts): return "" return "/".join(parts)