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

零基础搭建轻量级档案管理系统实操指南

发布时间:2026年07月01日 11:50:31 浏览量:0

开发环境搭建与依赖配置

在开始构建档案管理系统之前,必须先准备好标准化的Python开发环境。本系统基于Python 3.8及以上版本开发,利用Flask框架提供Web服务,SQLite作为轻量级数据库存储档案元数据。

在本地创建一个项目目录,并进入该目录:

```bash mkdir archive_system cd archive_system ```

为了隔离项目依赖,避免污染全局环境,必须创建虚拟环境。在Windows系统下执行以下命令:

```bash python -m venv venv venv\Scripts\activate ```

如果是Linux或macOS系统,执行命令如下:

```bash python3 -m venv venv source venv/bin/activate ```

激活虚拟环境后,安装核心依赖包Flask。Flask是一个微框架,非常适合快速构建此类轻量级应用。执行安装命令:

```bash pip install flask ```

为了确保后续文件上传功能正常,需要手动创建一个用于存储上传文件的目录。在项目根目录下创建名为uploads的文件夹:

```bash mkdir uploads ```

数据库设计与初始化脚本

系统采用SQLite数据库,无需安装额外的数据库服务,配置简单且易于迁移。我们需要设计一张表来存储档案的基本信息,包括文件名、存储路径、档案分类以及上传时间。

在项目根目录下创建一个名为init_db.py的文件,并写入以下代码。这段代码将自动生成数据库文件并建立表结构:

```python import sqlite3 def init_db(): 连接到数据库文件,如果不存在会自动创建 conn = sqlite3.connect('archives.db') cursor = conn.cursor() 创建档案表 id: 主键,自增 filename: 原始文件名 filepath: 服务器存储路径 category: 档案分类(如:合同、人事、财务) upload_time: 上传时间戳 cursor.execute(''' CREATE TABLE IF NOT EXISTS archives ( id INTEGER PRIMARY KEY AUTOINCREMENT, filename TEXT NOT NULL, filepath TEXT NOT NULL, category TEXT NOT NULL, upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ''') conn.commit() conn.close() print("数据库初始化完成,数据库文件已生成。") if __name__ == '__main__': init_db() ```

保存文件后,在终端执行该脚本以完成数据库的初始化:

```bash python init_db.py ```

后端核心逻辑开发

后端是系统的核心,负责处理文件上传、数据存储以及档案查询。我们将所有逻辑封装在app.py文件中。请确保代码中uploads文件夹的路径配置正确,并严格限制上传文件的类型以保障安全。

零基础搭建轻量级档案管理系统实操指南

在项目根目录下创建app.py,并写入以下完整代码:

```python import os import sqlite3 from flask import Flask, render_template, request, redirect, url_for, flash from werkzeug.utils import secure_filename app = Flask(__name__) app.secret_key = 'your_secret_key_here' 用于Flash消息加密,请自行修改复杂字符串 配置文件上传目录 UPLOAD_FOLDER = 'uploads' ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'doc', 'docx', 'xls', 'xlsx'} app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 确保上传目录存在 if not os.path.exists(UPLOAD_FOLDER): os.makedirs(UPLOAD_FOLDER) def allowed_file(filename): """检查文件扩展名是否合法""" return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def get_db_connection(): """获取数据库连接""" conn = sqlite3.connect('archives.db') conn.row_factory = sqlite3.Row 允许通过列名访问数据 return conn @app.route('/') def index(): """首页:展示档案列表""" conn = get_db_connection() 支持按分类筛选 category_filter = request.args.get('category') query = "SELECT FROM archives" params = [] if category_filter: query += " WHERE category = ?" params.append(category_filter) query += " ORDER BY upload_time DESC" archives = conn.execute(query, params).fetchall() conn.close() return render_template('index.html', archives=archives) @app.route('/upload', methods=['GET', 'POST']) def upload_file(): """上传档案页面""" if request.method == 'POST': 检查是否有文件被选中 if 'file' not in request.files: flash('没有文件部分') return redirect(request.url) file = request.files['file'] category = request.form.get('category', '未分类') 如果用户未选择文件,浏览器也会提交一个空的文件名 if file.filename == '': flash('未选择文件') return redirect(request.url) if file and allowed_file(file.filename): 使用secure_filename处理文件名,防止路径遍历攻击 filename = secure_filename(file.filename) filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(filepath) 存入数据库 conn = get_db_connection() conn.execute('INSERT INTO archives (filename, filepath, category) VALUES (?, ?, ?)', (filename, filepath, category)) conn.commit() conn.close() flash('档案上传成功!') return redirect(url_for('index')) else: flash('不支持的文件类型') return render_template('upload.html') if __name__ == '__main__': app.run(debug=True, port=5000) ```

前端页面模板实现

Flask使用Jinja2模板引擎。为了保持页面整洁,我们需要创建一个templates文件夹,并在其中编写HTML文件。系统包含三个主要视图:基础布局、首页列表和上传表单。

首先创建templates文件夹:

```bash mkdir templates ```

templates目录下创建base.html,这是所有页面的父模板,定义了导航栏和基本样式:

```html 档案管理系统
{% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %}
{{ message }}
{% endfor %} {% endif %} {% endwith %} {% block content %}{% endblock %}
```

接下来创建index.html,用于展示档案列表:

```html {% extends "base.html" %} {% block content %}

档案列表

{% for archive in archives %} {% else %} {% endfor %}
ID 文件名 分类 上传时间 操作
{{ archive.id }} {{ archive.filename }} {{ archive.category }} {{ archive.upload_time }} 下载/查看
暂无档案数据
{% endblock %} ```

最后创建upload.html,提供文件上传表单:

```html {% extends "base.html" %} {% block content %}

上传新档案

{% endblock %} ```

系统启动与功能验证

代码编写完成后,即可启动系统进行测试。确保当前终端处于虚拟环境激活状态,并且位于项目根目录下。

执行以下命令启动Flask开发服务器:

```bash python app.py ```

当终端显示 Running on http://127.0.0.1:5000 时,说明服务已成功启动。打开浏览器,访问上述地址。

验证步骤如下:

  1. 测试上传功能:点击导航栏的“上传档案”,选择一个本地文件(如PDF或图片),选择分类“合同”,点击“开始上传”。页面应提示“档案上传成功”并跳转回首页。
  2. 验证数据存储:在首页列表中,应该能看到刚才上传的文件名、分类以及当前时间。
  3. 测试筛选功能:在首页下拉框中选择“合同”,点击查询,列表应只显示分类为合同的档案。
  4. 检查文件存储:查看项目根目录下的uploads文件夹,确认物理文件已成功保存。

至此,一个基于Python Flask和SQLite的轻量级档案管理系统已完全搭建完成。该系统具备了基础的文件上传、分类存储、列表展示和筛选功能,可直接用于内部小团队的档案管理培训或演示。

档案中级职称怎么考?搭配档案管理系统的培训实用通关攻略
档案中级职称怎么考?搭配档案管理系统的培训实用通关攻略
不少准备考档案中级职称的朋友吐槽,要么理论知识点太杂记不住,要么涉及数字档案的实操题摸不着头脑,备考大半年还是卡在及格线边缘。今天就把我和身边3位同事去年通关的实用方法整理出来,结合近年考试的命题趋势...
2026年07月01日 11:50:31
档案软件公司哪家有资质?5步精准筛选权威服务商
档案软件公司哪家有资质?5步精准筛选权威服务商
选档案软件,最怕遇到没资质、不靠谱的供应商。系统用不起来、数据不安全、服务跟不上……一堆麻烦事。今天咱们就掰开揉碎讲讲,怎么一步步找到真正有实力、有资质的档案软件公司,让你钱花在刀刃上,数字化转型踏踏...
2026年07月01日 11:50:31
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818