From 500a01d8b94521fe5ead8981aeacaa4ead9753f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=40jkccchen123?= <893824054@qq.com> Date: Tue, 9 Jul 2024 20:30:51 +0800 Subject: [PATCH] jk-2024.07.09-20:30 --- www2/main.js | 13 +++-- www2/main3.js | 92 ++++++++++++++++++++++++++++++++++++ www2/main4.js | 92 ++++++++++++++++++++++++++++++++++++ www2/main5.js | 92 ++++++++++++++++++++++++++++++++++++ www2/static/work1.html | 21 +++++--- www2/uploads/1000001044.jpg | Bin 0 -> 559501 bytes 6 files changed, 296 insertions(+), 14 deletions(-) create mode 100644 www2/main3.js create mode 100644 www2/main4.js create mode 100644 www2/main5.js create mode 100644 www2/uploads/1000001044.jpg diff --git a/www2/main.js b/www2/main.js index db91c7f..41a6972 100644 --- a/www2/main.js +++ b/www2/main.js @@ -77,13 +77,12 @@ app.post('/login', urlencodedParser, function(req, res) {//用户登录功能 res.send('数据库查询错误!'); // 可以重定向到登录页面或其他处理方式 return; } - if (results.length > 0) { - // 登录成功 - //req.session.username = username; // 将用户名存储在session中 - res.redirect('/work1.html?username=' + username + '&userid=' + results[0].id); // 登录成功后重定向到系统主页面 - } else {// 登录失败,可以重定向到登录页面并显示错误信息 - console.log('[用户名或密码不正确]'); - res.send(''); + if (results.length > 0) {// 登录成功 + res.redirect('/work1.html?username=' + username + '&userid=' + results[0].id); // 登录成功后重定向到系统主页面 + } + else {// 登录失败,可以重定向到登录页面并显示错误信息 + console.log('[用户名或密码不正确]'); + res.send(''); } }); }) diff --git a/www2/main3.js b/www2/main3.js new file mode 100644 index 0000000..93dfff8 --- /dev/null +++ b/www2/main3.js @@ -0,0 +1,92 @@ +var mysql = require('mysql'); +var express = require('express'); +var cors = require('cors'); +var app = express(); +var bodyParser = require('body-parser'); +const crypto = require('crypto'); +const fs = require('fs'); +const path = require('path'); +const fileUpload = require('express-fileupload'); +const session = require('express-session'); +const multer = require('multer'); + +var connection = mysql.createConnection({ + host : 'localhost', + port : '13307', + user : 'root', + password : '123456', + database : 'mailbox' +}); + + +app.use(cors()) + +//上传并识别功能 +const upload = multer({ dest: 'uploads/' }); // 上传文件的临时存储目录 // Multer是一个Node.js中间件,用于处理multipart/form-data类型的表单数据 +app.post('/api/upload', upload.single('image'), function(req, res) {// 单文件上传 + if (!req.file) { + return res.status(400).send('No file uploaded.'); + } + + const file = req.file; + const tempFilePath = file.path; + + const hash = crypto.createHash('sha256'); + const input = fs.createReadStream(tempFilePath); + + input.on('data', (data) => { + hash.update(data); + }); + input.on('end', () => { + const fileHash = hash.digest('hex'); + const fileName = file.originalname; + const filePath = path.join(__dirname, 'uploads', fileName); + const user_name = req.query.user_name + // Check if file with same hash already exists in database + const sqlCheck = 'SELECT * FROM images WHERE hash = ?'; + connection.query(sqlCheck, [fileHash], function(err, result) { + if (err) { + console.log(err); + return res.status(500).send('Error checking file in database'); + } + + if (result.length > 0) { + // If file with same hash exists, return "has been uploaded" + fs.unlinkSync(tempFilePath); // Delete the uploaded file + return res.json({ message: 'File with same hash already uploaded', fileName: '识别成功,结果为:' + result[0].goods});//如果文件已经存在,则返回这个文件的对应的匹配结果 + } else { + fs.rename(tempFilePath, filePath, function(err) { + if (err) { + console.log(err); + return res.status(500).send('Error uploading file'); + } else { + const sql = 'INSERT INTO images (name, path, hash, username) VALUES (?, ?, ?, ?)'; + connection.query(sql, [fileName, filePath, fileHash, user_name], function(err, result) { + if (err) { + console.log(err); + return res.status(500).send('Error uploading file to database'); + } + res.json({ message: 'File uploaded successfully', fileName: "识别失败,请重传文件:" + fileName }); + }); + } + }); + } + }); + }); +}); + + +var server = app.listen(8085, '0.0.0.0', function () { + + var host = server.address().address + var port = server.address().port + + connection.connect(function(err){ + if(err){ + console.log('[query] - :'+err); + return; + } + console.log('[connection connect] succeed!'); + }); + console.log("应用实例,访问地址为 http://%s:%s", host, port) +}) \ No newline at end of file diff --git a/www2/main4.js b/www2/main4.js new file mode 100644 index 0000000..2e88401 --- /dev/null +++ b/www2/main4.js @@ -0,0 +1,92 @@ +var mysql = require('mysql'); +var express = require('express'); +var cors = require('cors'); +var app = express(); +var bodyParser = require('body-parser'); +const crypto = require('crypto'); +const fs = require('fs'); +const path = require('path'); +const fileUpload = require('express-fileupload'); +const session = require('express-session'); +const multer = require('multer'); + +var connection = mysql.createConnection({ + host : 'localhost', + port : '13307', + user : 'root', + password : '123456', + database : 'mailbox' +}); + + +app.use(cors()) + +//上传并识别功能 +const upload = multer({ dest: 'uploads/' }); // 上传文件的临时存储目录 // Multer是一个Node.js中间件,用于处理multipart/form-data类型的表单数据 +app.post('/api/upload', upload.single('image'), function(req, res) {// 单文件上传 + if (!req.file) { + return res.status(400).send('No file uploaded.'); + } + + const file = req.file; + const tempFilePath = file.path; + + const hash = crypto.createHash('sha256'); + const input = fs.createReadStream(tempFilePath); + + input.on('data', (data) => { + hash.update(data); + }); + input.on('end', () => { + const fileHash = hash.digest('hex'); + const fileName = file.originalname; + const filePath = path.join(__dirname, 'uploads', fileName); + const user_name = req.query.user_name + // Check if file with same hash already exists in database + const sqlCheck = 'SELECT * FROM images WHERE hash = ?'; + connection.query(sqlCheck, [fileHash], function(err, result) { + if (err) { + console.log(err); + return res.status(500).send('Error checking file in database'); + } + + if (result.length > 0) { + // If file with same hash exists, return "has been uploaded" + fs.unlinkSync(tempFilePath); // Delete the uploaded file + return res.json({ message: 'File with same hash already uploaded', fileName: '识别成功,结果为:' + result[0].goods});//如果文件已经存在,则返回这个文件的对应的匹配结果 + } else { + fs.rename(tempFilePath, filePath, function(err) { + if (err) { + console.log(err); + return res.status(500).send('Error uploading file'); + } else { + const sql = 'INSERT INTO images (name, path, hash, username) VALUES (?, ?, ?, ?)'; + connection.query(sql, [fileName, filePath, fileHash, user_name], function(err, result) { + if (err) { + console.log(err); + return res.status(500).send('Error uploading file to database'); + } + res.json({ message: 'File uploaded successfully', fileName: "识别失败,请重传文件:" + fileName }); + }); + } + }); + } + }); + }); +}); + + +var server = app.listen(8086, '0.0.0.0', function () { + + var host = server.address().address + var port = server.address().port + + connection.connect(function(err){ + if(err){ + console.log('[query] - :'+err); + return; + } + console.log('[connection connect] succeed!'); + }); + console.log("应用实例,访问地址为 http://%s:%s", host, port) +}) \ No newline at end of file diff --git a/www2/main5.js b/www2/main5.js new file mode 100644 index 0000000..19947f6 --- /dev/null +++ b/www2/main5.js @@ -0,0 +1,92 @@ +var mysql = require('mysql'); +var express = require('express'); +var cors = require('cors'); +var app = express(); +var bodyParser = require('body-parser'); +const crypto = require('crypto'); +const fs = require('fs'); +const path = require('path'); +const fileUpload = require('express-fileupload'); +const session = require('express-session'); +const multer = require('multer'); + +var connection = mysql.createConnection({ + host : 'localhost', + port : '13307', + user : 'root', + password : '123456', + database : 'mailbox' +}); + + +app.use(cors()) + +//上传并识别功能 +const upload = multer({ dest: 'uploads/' }); // 上传文件的临时存储目录 // Multer是一个Node.js中间件,用于处理multipart/form-data类型的表单数据 +app.post('/api/upload', upload.single('image'), function(req, res) {// 单文件上传 + if (!req.file) { + return res.status(400).send('No file uploaded.'); + } + + const file = req.file; + const tempFilePath = file.path; + + const hash = crypto.createHash('sha256'); + const input = fs.createReadStream(tempFilePath); + + input.on('data', (data) => { + hash.update(data); + }); + input.on('end', () => { + const fileHash = hash.digest('hex'); + const fileName = file.originalname; + const filePath = path.join(__dirname, 'uploads', fileName); + const user_name = req.query.user_name + // Check if file with same hash already exists in database + const sqlCheck = 'SELECT * FROM images WHERE hash = ?'; + connection.query(sqlCheck, [fileHash], function(err, result) { + if (err) { + console.log(err); + return res.status(500).send('Error checking file in database'); + } + + if (result.length > 0) { + // If file with same hash exists, return "has been uploaded" + fs.unlinkSync(tempFilePath); // Delete the uploaded file + return res.json({ message: 'File with same hash already uploaded', fileName: '识别成功,结果为:' + result[0].goods});//如果文件已经存在,则返回这个文件的对应的匹配结果 + } else { + fs.rename(tempFilePath, filePath, function(err) { + if (err) { + console.log(err); + return res.status(500).send('Error uploading file'); + } else { + const sql = 'INSERT INTO images (name, path, hash, username) VALUES (?, ?, ?, ?)'; + connection.query(sql, [fileName, filePath, fileHash, user_name], function(err, result) { + if (err) { + console.log(err); + return res.status(500).send('Error uploading file to database'); + } + res.json({ message: 'File uploaded successfully', fileName: "识别失败,请重传文件:" + fileName }); + }); + } + }); + } + }); + }); +}); + + +var server = app.listen(8087, '0.0.0.0', function () { + + var host = server.address().address + var port = server.address().port + + connection.connect(function(err){ + if(err){ + console.log('[query] - :'+err); + return; + } + console.log('[connection connect] succeed!'); + }); + console.log("应用实例,访问地址为 http://%s:%s", host, port) +}) \ No newline at end of file diff --git a/www2/static/work1.html b/www2/static/work1.html index bc06b86..18fc2f0 100644 --- a/www2/static/work1.html +++ b/www2/static/work1.html @@ -305,10 +305,7 @@ } }); } - - - 返回模块选择 @@ -321,13 +318,23 @@