13 lines
513 B
Python
13 lines
513 B
Python
"""Санитизация имени файла с сохранением подпапок."""
|
|
|
|
|
|
def safe_name(name: str) -> str:
|
|
"""Вернуть безопасное относительное имя или пустую строку."""
|
|
|
|
if not isinstance(name, str) or not name:
|
|
return ""
|
|
parts = [part for part in name.replace("\\", "/").split("/")
|
|
if part and part != "."]
|
|
if not parts or any(part == ".." for part in parts):
|
|
return ""
|
|
return "/".join(parts) |