网站首页/ 信息中心/ 档案百科/

从零搭建本地支持分类搜索批量上传的轻量级图片档案管理系统实操

发布时间:2026年08月24日 13:50:13 浏览量:0

一、前置准备(必做)

1. 安装Node.js运行环境

直接访问Node.js官方LTS版本下载页:https://nodejs.org/zh-cn/download/,选择与你电脑系统匹配的安装包(Windows选.msi,Mac选.pkg),安装时直接点击“Next”即可,无需额外配置。

安装完成后,打开终端(Windows用CMD或PowerShell,Mac用Terminal),分别输入以下2条命令验证安装成功:

``` node -v npm -v ```

若终端显示类似v20.12.2、10.5.0的版本号,说明环境正常。

2. 安装MongoDB本地数据库

访问MongoDB Community Server LTS版本下载页:https://www.mongodb.com/try/download/community,选择系统后点击“Download”安装包(Windows选MSI,Mac选.dmg)。

安装时重点注意:Windows用户勾选“Install MongoDB as a Service”(安装为服务),Mac用户按提示拖拽图标即可;安装完成后无需手动启动服务,会自动后台运行。

同样打开终端,输入以下命令验证:

``` mongod --version ```

显示类似v7.0.9的版本号即可。

3. 创建项目文件夹

在桌面或其他方便的位置新建一个纯英文无空格的文件夹,比如命名为local-img-archive,后续所有操作都在这个文件夹内进行。

二、后端代码实现(可直接复制)

1. 初始化后端项目

打开终端,切换到刚才创建的文件夹:

``` cd 桌面/local-img-archive Windows如果是中文用户名,路径加双引号 ```

初始化Node.js项目,一路按回车默认配置:

``` npm init -y ```

安装必要的依赖包:

``` npm install express mongoose multer cors --save ```

依赖说明:express是Web框架,mongoose是MongoDB操作工具,multer是文件上传中间件,cors解决跨域问题。

2. 编写后端核心代码

local-img-archive文件夹内新建2个文件和1个文件夹:index.js(主入口)、package.json(已自动生成无需新建)、uploads(存储上传图片的文件夹)。

打开index.js,直接复制以下完整代码:

```javascript const express = require('express'); const mongoose = require('mongoose'); const multer = require('multer'); const cors = require('cors'); const path = require('path'); const fs = require('fs'); // 1. 初始化服务 const app = express(); const PORT = 3001; // 2. 中间件配置 app.use(cors()); app.use(express.json()); // 静态资源访问:打开uploads文件夹下的图片 app.use('/images', express.static(path.join(__dirname, 'uploads'))); // 3. 连接MongoDB mongoose.connect('mongodb://127.0.0.1:27017/localImgArchive') .then(() => console.log('MongoDB连接成功')) .catch(err => console.error('MongoDB连接失败:', err)); // 4. 定义图片数据模型 const imgSchema = new mongoose.Schema({ filename: String, // 存储的文件名 originalname: String, // 上传的原文件名 category: String, // 分类 uploadTime: { type: Date, default: Date.now } // 上传时间 }); const Img = mongoose.model('Img', imgSchema); // 5. Multer文件上传配置 const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, 'uploads'); }, filename: (req, file, cb) => { // 生成唯一文件名防止覆盖:原文件名_时间戳.后缀 const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() 1E9); const ext = path.extname(file.originalname); cb(null, file.fieldname + '-' + uniqueSuffix + ext); } }); const upload = multer({ storage: storage }); // 6. 后端接口 // 接口1:批量上传图片,参数category可选 app.post('/api/upload', upload.array('images', 20), async (req, res) => { const category = req.body.category || '未分类'; try { const imgData = req.files.map(file => ({ filename: file.filename, originalname: file.originalname, category: category })); await Img.insertMany(imgData); res.json({ code: 200, msg: '上传成功', data: imgData }); } catch (err) { res.json({ code: 500, msg: '上传失败:' + err.message }); } }); // 接口2:获取所有图片或按分类搜索 app.get('/api/images', async (req, res) => { const category = req.query.category; try { let query = {}; if (category) query.category = category; const images = await Img.find(query).sort({ uploadTime: -1 }); res.json({ code: 200, data: images }); } catch (err) { res.json({ code: 500, msg: '获取失败:' + err.message }); } }); // 接口3:删除图片(同时删除文件和数据库记录) app.delete('/api/images/:id', async (req, res) => { try { const img = await Img.findById(req.params.id); if (!img) return res.json({ code: 404, msg: '图片不存在' }); // 删除本地文件 fs.unlinkSync(path.join(__dirname, 'uploads', img.filename)); // 删除数据库记录 await Img.findByIdAndDelete(req.params.id); res.json({ code: 200, msg: '删除成功' }); } catch (err) { res.json({ code: 500, msg: '删除失败:' + err.message }); } }); // 7. 启动服务 app.listen(PORT, () => console.log(`后端服务已启动,地址:http://127.0.0.1:${PORT}`)); ```

3. 启动后端服务

在终端输入以下命令:

``` node index.js ```

看到“MongoDB连接成功”和“后端服务已启动”,说明后端正常,终端不要关闭

三、前端页面实现(可直接复制)

1. 新建前端HTML文件

local-img-archive文件夹内新建一个index.html文件,直接复制以下完整代码:

```html 本地图片档案管理系统 本地图片档案管理系统
搜索分类:
```

2. 打开前端页面

直接双击index.html文件,浏览器会自动打开,现在可以使用所有功能了。

四、日常使用注意事项

太原档案数字化服务流程是怎样的?大概需要多少钱?
太原档案数字化服务流程是怎样的?大概需要多少钱?
太原档案数字化服务通常包含需求分析、方案制定、现场整理、扫描加工、数据挂接、验收交付等核心流程,费用根据档案数量、纸张状况、数字化标准等因素综合计算,2026年市场价格范围大致在每页0.5元至2元之间...
2026年08月24日 13:50:13
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818