From ae1184884d28b5cdb719efa8523e5d04b75175f9 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 10 二月 2025 16:30:24 +0800
Subject: [PATCH] gx

---
 app.js |   55 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/app.js b/app.js
index 3226004..e577b05 100644
--- a/app.js
+++ b/app.js
@@ -1,4 +1,5 @@
 require("@tensorflow/tfjs-node");
+const logger = require('./logger'); // 引入上面创建的logger
 const fs= require ('fs');
 const express = require("express");
 const moment = require("moment");
@@ -15,13 +16,24 @@
 faceapi.env.monkeyPatch({ Canvas, Image });
 
 const app = express();
+
+function getFileExtension(filename) {
+  // 检查是否有点存在,如果没有直接返回空字符串
+  if (filename.indexOf('.') === -1) return '';
+
+  // 使用split方法根据最后一个点分割字符串,并取最后一部分作为扩展名
+  return filename.split('.').pop();
+}
+
+
 // 设置存放格式
 const storage = multer.diskStorage({
   destination(req, file, cb) {
     cb(null, './uploads')
   },
   filename(req, file, cb) {
-    cb(null, Date.now() + '-' + file.originalname)
+    const originalname = getFileExtension(file.originalname)
+    cb(null, Date.now() + '.'+originalname)
   }
 })
 // 加载文件存储
@@ -79,8 +91,16 @@
       console.log(`Progress = ${counter}%`);
       // Read each face and save the face descriptions in the descriptions array
       const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor();
-      descriptions.push(detections.descriptor);
-      imgs.push(images[i])
+      if(detections.descriptor){
+        descriptions.push(detections.descriptor);
+        imgs.push(images[i])
+      }
+      
+    }
+    console.log(descriptions,images)
+    if(descriptions==[]){
+      console.log('人脸读取有错误')
+      return false
     }
     //用给定的标签创建一个新的面文档,并将其保存在数据库中
     const createFace = new FaceModel({
@@ -167,11 +187,12 @@
       imgs.push(req.files[i].path)
     }
     let label = req.body.label
+    logger.info(`上传${label}人脸信息`)
     console.log('---------------',label)
     let result = await uploadLabeledImages(imgs, label);
     console.log('---------------',result)
     if(result===true){ 
-        
+        logger.info(`上传${label}人脸信息成功`)
         res.json({code:200, message:"录入成功"})
     }else{
         // let result = await getDescriptorsFromDB(File1);
@@ -184,15 +205,15 @@
             }
           })
         })
-        
+        logger.info(`删除${label}人脸信息,录入失败`)
         res.json({code:400, message:"人脸模型录入失败,请重新录入"})
         
     }
 })
 /**验证人脸对比 */
 app.post("/check-face",upload.single('file'), async (req, res) => {
-  console.log(req.file)
   const File1 = req.file.path;
+  logger.info(`验证人脸信息识别:${File1}`)
   try {
     let result = await getDescriptorsFromDB(File1);
     fs.unlink(File1,(err)=>{
@@ -211,14 +232,22 @@
 });
 // 获取人脸模型
 app.post('/get-face',upload.single('file'),async (req, res) => {
-  const label = req.body.label
-  const result=await FaceModel.findOne({ "label": label })
-  res.json({code:200,result})
+ 
+  try{
+    const label = req.body.label
+    logger.info(`获取人脸模型:${label}`)
+    const result=await FaceModel.findOne({ "label": label })
+    logger.info(`返回人脸模型:${label}:${JSON.stringify(result)}`)
+    res.json({code:200,result})
+  }catch(error){
+    res.json({code:200,error})
+  }
+ 
 })
 // 清除人脸模型
 app.post("/del-face",upload.single('file'),async(req,res)=>{
   const label = req.body.label
-  console.log('删除人脸库',label)
+  logger.info(`删除人脸库${label}`)
   FaceModel.findOne({ "label": label }).then(re=>{
     console.log('kankan---')
     console.log(re.images)
@@ -236,9 +265,11 @@
   })
   let result= deleteLabelImages(label)
   if(result){
+    logger.info(`删除人脸库${label};成功`)
     res.json({message:'success'})
 
   }else{
+    logger.info(`删除人脸库${label};失败`)
     res.json({message:"err"})
   }
 })
@@ -261,8 +292,10 @@
     }
   )
   .then(() => {
-    app.listen(process.env.PORT || 5000);
+    app.listen(process.env.PORT || 80,'0.0.0.0');
     console.log("DB connected and server us running.");
+    console.log('http-sse-'+80)
+    logger.info('数据库连接成功,服务已启动,端口号80')
   })
   .catch((err) => {
     console.log(err);

--
Gitblit v1.8.0