可以成功动态更换yolo模型并重启服务生效
This commit is contained in:
		| @ -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} | ||||
|  | ||||
		Reference in New Issue
	
	Block a user