jk-2024.07.09-20:30

pull/3/head
陈@jkccchen123 8 months ago
parent 1a05750044
commit 500a01d8b9

@ -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('<script>alert("用户名或密码不正确");window.location.href="welcome.html";</script>');
if (results.length > 0) {// 登录成功
res.redirect('/work1.html?username=' + username + '&userid=' + results[0].id); // 登录成功后重定向到系统主页面
}
else {// 登录失败,可以重定向到登录页面并显示错误信息
console.log('[用户名或密码不正确]');
res.send('<script>alert("用户名或密码不正确");window.location.href="welcome.html";</script>');
}
});
})

@ -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)
})

@ -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)
})

@ -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)
})

@ -305,10 +305,7 @@
}
});
}
</script>
<a href="#" class="return-btn" onclick="goBack()">返回模块选择</a>
</div>
@ -321,13 +318,23 @@
</address>
<script>
function getHostname() {
var hostname = window.location.hostname;
console.log("当前页面的主机名是:" + hostname);
}
getHostname(); // 调用函数来获取主机名
//var port_count = 0只有使用顺序分配策略时候才取消注释
function uploadImage() {
var formData = new FormData(document.getElementById("uploadForm"));
var urlParams = new URLSearchParams(window.location.search);
var username = urlParams.get('username');
var ports=[8084, 8085, 8086, 8087]//识别功能端口组,一个口代表一个识别服务器
var randomPort = ports[Math.floor(Math.random() * ports.length)];// 从端口数组中随机选择一个端口
var host = window.location.hostname; // 获取当前页面的主机名
fetch('http://192.168.43.159:8084/api/upload?user_name=' + username, {
fetch('http://' + host + ':' + randomPort + '/api/upload?user_name=' + username, {//随机分配策略
// fetch('http://' + host + ':' + ports[port_count] + '/api/upload?user_name=' + username, {//顺序分配策略
method: 'POST',
body: formData
})
@ -335,8 +342,10 @@
.then(data => {
alert("识别结果: " + data.fileName);
renderChart()
port_count = (port_count + 1) % ports.length;// 更新索引以循环使用端口数组(顺序分配时使用,用随机策略时要注释掉)
})
.catch(error => console.error('Error:', error));
}
@ -349,8 +358,6 @@
document.getElementById(moduleId).style.display = 'block';
}
document.addEventListener('DOMContentLoaded', function () {//监听程序,用来解决:点击返回按钮后重新出现“后台管理”按钮的问题
var params = new URLSearchParams(window.location.search);
var username = params.get('username');//获取用户名

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

Loading…
Cancel
Save