档案数字化移动管理从采集到归档实操落地指南
一、方案选型与环境准备
1. 核心工具选型(全开源零成本)
本次方案选用免费开源工具,覆盖采集、存储、管理全流程,无付费门槛:
- 移动端:UniApp(跨端开发,一套代码支持安卓/苹果,零移动端开发门槛)
- 后端:FastAPI(Python轻量级框架,接口开发快,自动生成文档)
- 数据库:SQLite(本地文件型数据库,无需服务器,适配小团队)
2. 环境搭建具体步骤
步骤1:安装Python3.10(官网地址:https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe),安装时必须勾选「Add Python to PATH」
步骤2:打开命令提示符,执行后端依赖安装命令:
```pip install fastapi uvicorn sqlalchemy python-multipart```步骤3:下载UniApp开发工具HBuilderX(官方地址:https://download.dcloud.net.cn/HBuilderX.3.99.20230910.exe),双击安装即可,无需其他配置
二、移动端档案采集模块实操
1. 拍照上传功能实现
核心功能为「拍照后压缩上传」,必须填写档案编号(archive_no),避免文件混乱,完整代码如下:
``` // UniApp 拍照上传核心代码 uni.chooseImage({ count: 1, sourceType: ['camera'], success: (res) => { // 压缩图片至500KB内,适配移动端上传速度 uni.compressImage({ src: res.tempFilePaths[0], quality: 50, success: (compressRes) => { // 上传至后端接口 uni.uploadFile({ url: 'http://127.0.0.1:8000/upload', filePath: compressRes.tempFilePath, name: 'file', formData: { 'archive_no': '2024001' // 替换为实际档案编号 }, success: (uploadRes) => { console.log('上传成功', uploadRes.data) }, fail: (err) => { console.log('上传失败', err) } }) } }) } }) ```三、后端档案存储与管理模块搭建
1. 核心接口代码(完整可运行)
新建文件夹「archive_system」,在文件夹内创建main.py文件,粘贴以下完整代码:
```python from fastapi import FastAPI, File, UploadFile, Form from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker import os 初始化本地数据库SQLite SQLALCHEMY_DATABASE_URL = "sqlite:///./archive.db" os.makedirs("./uploads", exist_ok=True) 自动创建存储文件夹 engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() 档案数据模型 class Archive(Base): __tablename__ = "archives" id = Column(Integer, primary_key=True, index=True) archive_no = Column(String, index=True) file_path = Column(String) file_name = Column(String) 创建数据库表 Base.metadata.create_all(bind=engine) app = FastAPI() 文件上传接口 @app.post("/upload") async def upload_file(file: UploadFile = File(...), archive_no: str = Form(...)): 保存文件至本地uploads文件夹 file_name = f"{archive_no}_{file.filename}" file_location = f"./uploads/{file_name}" with open(file_location, "wb+") as file_object: file_object.write(await file.read()) 档案信息存入数据库 db = SessionLocal() db_archive = Archive(archive_no=archive_no, file_path=file_location, file_name=file_name) db.add(db_archive) db.commit() db.refresh(db_archive) return {"status": "success", "archive_id": db_archive.id} 档案列表查询接口 @app.get("/archives") def get_archives(): db = SessionLocal() return db.query(Archive).all() ```2. 后端启动与测试

在archive_system文件夹下打开命令提示符,执行启动命令:
```uvicorn main:app --reload```启动成功后,访问http://127.0.0.1:8000/docs可查看自动生成的接口文档,点击「/upload」接口的「Try it out」,输入档案编号上传测试图片,验证接口可用性。
四、移动端档案查询与管理功能
1. 查询接口对接
在UniApp项目中,新增查询页面,粘贴以下核心代码:
``` // 页面加载时获取档案列表 onLoad() { uni.request({ url: 'http://192.168.1.100:8000/archives', // 替换为电脑的内网IP method: 'GET', success: (res) => { this.archiveList = res.data } }) } ```重点: 移动端调试时,需将接口地址改为电脑的内网IP(可在电脑命令提示符中执行ipconfig查看),确保手机与电脑在同一WiFi下。
2. 离线管理适配
移动端需开启本地缓存,无网络时可编辑待上传档案,联网后批量提交,代码片段:
``` // 离线缓存待上传档案 uni.setStorageSync('pendingUpload', JSON.stringify({archive_no: '2024002', filePath: tempFilePath})) ```五、全流程部署与测试
1. 本地完整测试步骤
- 步骤1:在archive_system文件夹内创建uploads文件夹(或让代码自动生成)
- 步骤2:启动后端服务,确认8000端口正常
- 步骤3:打开HBuilderX,新建uni-app项目,粘贴移动端代码
- 步骤4:手机开启USB调试,连接电脑,用UniApp模拟器运行项目
- 步骤5:测试拍照上传、列表查询功能,验证档案编号与文件的对应关系是否正确
2. 小团队简化部署方案
小团队无需额外服务器,将后端服务的电脑保持开机,所有成员手机连接同一WiFi,修改移动端接口地址为电脑内网IP即可使用,无需任何额外成本。
六、常见问题排查
- 后端启动报「端口被占用」:修改启动命令为```uvicorn main:app --reload --port 8080```,同步修改移动端接口地址
- 上传报「目录不存在」:手动在archive_system文件夹下新建uploads文件夹
- 移动端无法联网:检查WiFi是否统一,确认电脑防火墙未拦截8000端口