可以成功动态更换yolo模型并重启服务生效

This commit is contained in:
2025-09-12 18:28:43 +08:00
parent 4be7f7bf14
commit 206652d6bb
6 changed files with 499 additions and 123 deletions

View File

@ -12,7 +12,7 @@ def save_face_to_up_images(
) -> Dict[str, str]:
"""
保存人脸图片到 `/up_images/用户IP/人脸名字/` 路径
修复路径计算错误确保所有路径在up_images根目录下
修复路径计算错误确保所有路径在up_images根目录下,且统一使用正斜杠
参数:
client_ip: 客户端IP原始格式如192.168.1.101
@ -38,7 +38,7 @@ def save_face_to_up_images(
safe_face_name = "".join([c for c in safe_face_name if c not in r'\/:*?"<>|']) # 过滤非法字符
# 3. 构建根目录(强制转为绝对路径,避免相对路径混淆)
root_dir = Path("up_images").resolve() # 转为绝对路径(关键修复!)
root_dir = Path("up_images").resolve() # 转为绝对路径
if not root_dir.exists():
root_dir.mkdir(parents=True, exist_ok=True)
print(f"[FileUtil] 已创建up_images根目录{root_dir}")
@ -53,15 +53,16 @@ def save_face_to_up_images(
timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S%f")[:-3]
image_filename = f"face_{safe_ip}_{timestamp}.{image_format.lower()}"
# 6. 计算路径(关键修复:确保所有路径都是绝对路径且在root_dir下
# 6. 计算路径确保所有路径都是绝对路径且在root_dir下
local_abs_path = face_name_dir / image_filename # 绝对路径
# 验证路径是否在root_dir下防止路径穿越攻击
if not local_abs_path.resolve().is_relative_to(root_dir.resolve()):
raise Exception(f"图片路径不在up_images根目录下安全校验失败{local_abs_path}")
# 数据库存储路径从root_dir开始的相对路径(如 up_images/192_168_110_31/小王/xxx.jpg
db_path = str(root_dir.name / local_abs_path.relative_to(root_dir))
# 数据库存储路径从root_dir开始的相对路径,强制替换为正斜杠
relative_path = local_abs_path.relative_to(root_dir)
db_path = str(relative_path).replace("\\", "/") # 关键修复:统一使用正斜杠
# 7. 写入图片文件
with open(local_abs_path, "wb") as f:
@ -72,7 +73,7 @@ def save_face_to_up_images(
return {
"success": True,
"db_path": db_path, # 存数据库的相对路径(up_images开头
"db_path": db_path, # 存数据库的相对路径(使用正斜杠
"local_abs_path": str(local_abs_path), # 本地绝对路径
"msg": "图片保存成功"
}
@ -80,4 +81,4 @@ def save_face_to_up_images(
except Exception as e:
error_msg = f"图片保存失败:{str(e)}"
print(f"[FileUtil] 错误:{error_msg}")
return {"success": False, "db_path": "", "local_abs_path": "", "msg": error_msg}
return {"success": False, "db_path": "", "local_abs_path": "", "msg": error_msg}