Files
7z-encrypt-server/storage.py
T

38 lines
1.1 KiB
Python

"""
存储层模块 (storage)
模块: 服务端 / 存储层
输入: 明文流 + 元数据
输出: 最终文件路径
按日期目录落盘, 同名冲突加后缀去重, 流式移动不整块进内存。
"""
import shutil
from datetime import datetime
from pathlib import Path
from task_manager import TaskManager
class Storage:
def __init__(self, tasks: TaskManager, storage_root: str | Path) -> None:
self.tasks = tasks
self.storage_root = Path(storage_root)
def store(self, plain_path: Path, file_name: str) -> Path:
"""明文 -> 最终存储路径 (返回路径)"""
day_dir = self.storage_root / datetime.now().strftime("%Y-%m-%d")
day_dir.mkdir(parents=True, exist_ok=True)
# 同名冲突: 加 -1/-2 后缀
target = day_dir / file_name
counter = 1
while target.exists():
stem, suffix = file_name.rsplit(".", 1) if "." in file_name else (file_name, "")
name = f"{stem}-{counter}" + (f".{suffix}" if suffix else "")
target = day_dir / name
counter += 1
shutil.move(str(plain_path), str(target))
return target