返回
Node.js + Express + MySQL:Excel 文件上传解析与数据存储指南
后端
2024-01-26 10:34:02
Node.js + Express + MySQL 简介
在开始之前,让我们快速回顾一下 Node.js、Express 和 MySQL:
- Node.js: 一种跨平台的 JavaScript 运行时环境,允许您使用 JavaScript 编写服务器端应用程序。
- Express: 一个基于 Node.js 的轻量级 Web 框架,可以轻松地构建 RESTful API 和 Web 应用程序。
- MySQL: 一个开源的关系型数据库管理系统,以其可靠性、可扩展性和易用性而闻名。
我们将使用这些技术来构建一个能够上传 Excel 文件、解析文件中的数据并将其存储到 MySQL 数据库的系统。
项目搭建
首先,我们需要创建一个新的 Node.js 项目:
mkdir excel-upload-nodejs
cd excel-upload-nodejs
npm init -y
然后,我们需要安装必要的依赖项:
npm install express mysql2 multer body-parser
express
:Express 框架mysql2
:MySQL 客户端multer
:文件上传中间件body-parser
:解析请求主体中间件
配置 Express 和 Multer
接下来,我们需要在项目中配置 Express 和 Multer:
const express = require('express');
const app = express();
const multer = require('multer');
// 配置 Multer 的存储配置
const storage = multer.diskStorage({
destination: './uploads/',
filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname);
}
});
// 配置 Multer 的上传中间件
const upload = multer({ storage: storage });
// 配置 Express 的中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(multer().single('excelFile'));
// 启动 Express 服务
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
- 我们首先引入必要的模块,并创建一个新的 Express 应用程序。
- 接下来,我们配置 Multer 的存储配置,指定上传文件的存储位置和命名规则。
- 然后,我们配置 Multer 的上传中间件,并将其注册到 Express 应用程序中。
- 最后,我们配置 Express 的中间件,并启动服务器。
处理 Excel 文件上传
现在,我们需要添加一个路由来处理 Excel 文件上传:
// 路由:处理 Excel 文件上传
app.post('/upload', upload.single('excelFile'), async (req, res) => {
// 检查文件是否已上传
if (!req.file) {
return res.status(400).json({ error: 'No file uploaded' });
}
// 解析 Excel 文件
const excelToJson = require('convert-excel-to-json');
const result = excelToJson({
sourceFile: req.file.path
});
// 将解析后的数据存储到数据库
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'username',
password: 'password',
database: 'database_name'
});
connection.connect();
// 遍历解析后的数据并将其存储到数据库
for (const row of result.Sheet1) {
const sql = 'INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)';
const values = [row.column1, row.column2, row.column3];
connection.query(sql, values, (err, result) => {
if (err) {
console.log(err);
} else {
console.log('Data inserted successfully');
}
});
}
connection.end();
// 向客户端返回成功响应
res.status(200).json({ message: 'File uploaded successfully' });
});
- 在这个路由中,我们首先检查文件是否已上传。如果未上传,则返回错误响应。
- 然后,我们使用
convert-excel-to-json
库解析 Excel 文件。 - 接下来,我们使用
mysql2
库连接到 MySQL 数据库,并遍历解析后的数据,将其存储到数据库中。 - 最后,我们向客户端返回成功响应。
运行应用程序
现在,我们可以运行应用程序了:
npm start
然后,您可以使用 Postman 或其他 HTTP 请求工具测试上传 Excel 文件的功能。只需发送一个 POST 请求到 /upload
路由,并附上一个 Excel 文件即可。
结论
通过本指南,您已经了解了如何使用 Node.js、Express 和 MySQL 来实现 Excel 文件上传、解析和数据存储的功能。您可以将这些知识应用到自己的项目中,或者作为进一步学习的基础。