从零搭建可本地落地的会议材料数字档案馆系统实操指南

一、前期环境准备

1.1 安装Python环境

直接下载Python 3.10 64位稳定版安装包,地址:https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe

关键安装步骤:安装向导第一个界面必须勾选「Add Python 3.10 to PATH」选项,再点击Install Now,等待安装完成即可。

1.2 安装项目依赖

安装完成后按下Win+R输入cmd回车打开系统命令提示符,直接执行以下命令,一次性安装所有依赖:

``` pip install flask==2.2.5 flask-sqlalchemy==3.0.3 python-docx==1.1.0 PyPDF2==3.0.1 Pillow==10.1.0 ```

二、项目结构初始化

2.1 创建目录结构

在打开的命令提示符中依次执行以下命令,自动生成项目所需的所有目录:

``` 切换到你要存放项目的磁盘,比如存D盘就输入D:回车 D: 创建项目文件夹并进入 mkdir meeting-archive cd meeting-archive 创建功能目录 mkdir templates static\uploads instance ```

执行完成后,项目基础目录结构就生成完成了。

2.2 编写主程序代码

在项目根目录meeting-archive下新建文本文档,重命名为app.py,把以下完整代码复制进去,可直接使用:

``` from flask import Flask, render_template, request, send_from_directory, redirect, url_for from flask_sqlalchemy import SQLAlchemy import os import uuid app = Flask(__name__) 配置数据库 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///instance/meeting_archive.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 配置上传参数,单文件最大100MB,可自行修改 app.config['MAX_CONTENT_LENGTH'] = 100 1024 1024 app.config['UPLOAD_FOLDER'] = 'static/uploads' 允许上传的会议材料格式 ALLOWED_EXTENSIONS = {'pdf', 'docx', 'doc', 'ppt', 'pptx', 'jpg', 'png'} db = SQLAlchemy(app) 材料数据模型 class MeetingArchive(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(200), nullable=False) category = db.Column(db.String(50), nullable=False) filename = db.Column(db.String(100), nullable=False) upload_time = db.Column(db.DateTime, default=db.func.now()) 检查文件格式 def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS 首页路由 @app.route('/') def index(): keyword = request.args.get('keyword', '') if keyword: archives = MeetingArchive.query.filter(MeetingArchive.name.contains(keyword)).order_by(MeetingArchive.upload_time.desc()).all() else: archives = MeetingArchive.query.order_by(MeetingArchive.upload_time.desc()).all() return render_template('index.html', archives=archives, keyword=keyword) 上传路由 @app.route('/upload', methods=['POST']) def upload(): name = request.form.get('name') category = request.form.get('category') file = request.files['file'] if file and allowed_file(file.filename): 生成唯一文件名避免冲突 ext = file.filename.rsplit('.', 1)[1].lower() save_filename = f"{uuid.uuid4().hex}.{ext}" file.save(os.path.join(app.config['UPLOAD_FOLDER'], save_filename)) archive = MeetingArchive(name=name, category=category, filename=save_filename) db.session.add(archive) db.session.commit() return redirect(url_for('index')) 下载路由 @app.route('/download/') def download(archive_id): archive = MeetingArchive.query.get_or_404(archive_id) return send_from_directory(app.config['UPLOAD_FOLDER'], archive.filename, as_attachment=True, download_name=f"{archive.name}.{archive.filename.rsplit('.',1)[1]}") 删除路由 @app.route('/delete/') def delete(archive_id): archive = MeetingArchive.query.get_or_404(archive_id) os.remove(os.path.join(app.config['UPLOAD_FOLDER'], archive.filename)) db.session.delete(archive) db.session.commit() return redirect(url_for('index')) if __name__ == '__main__': 需要局域网访问请把host改为'0.0.0.0' app.run(host='127.0.0.1', port=5000, debug=False) ```

2.3 编写前端页面

meeting-archive/templates目录下新建文本文档,重命名为index.html,把以下完整代码复制进去:

``` 会议材料数字档案馆
会议材料数字档案馆

上传新会议材料

{% for archive in archives %}

{{archive.name}}

从零搭建可本地落地的会议材料数字档案馆系统实操指南

分类:{{archive.category}} | 归档时间:{{archive.upload_time.strftime('%Y-%m-%d %H:%M')}}

{% endfor %}
```

三、初始化与启动系统

3.1 初始化数据库

在项目根目录打开命令提示符,依次执行以下命令初始化数据库:

``` python >>> from app import app, db >>> db.create_all() >>> exit() ```

执行完成没有报错就是数据库初始化成功。

3.2 启动系统

在命令提示符执行以下命令启动系统:

``` python app.py ```

命令执行完成后,打开浏览器输入地址 http://127.0.0.1:5000 就能进入会议材料数字档案馆系统。如果需要单位内其他电脑访问,只需要打开app.py,把最后一行的host='127.0.0.1'改成host='0.0.0.0',重启系统后,用本机IP加端口访问即可,比如本机IP是192.168.1.100,访问地址就是http://192.168.1.100:5000

四、日常使用与备份方法

  • 上传归档:进入首页后填写会议名称、选择分类、选择要归档的会议材料,点击提交就能完成归档
  • 检索查找:在搜索框输入会议名称关键词,点击搜索就能快速定位到对应材料
  • 下载修改:找到需要的材料点击下载就能获取原文件,修改后重新上传归档即可
  • 完整备份:需要备份整个档案馆时,只需要复制项目根目录下的instance文件夹和static/uploads文件夹,粘贴到安全存储位置即可,还原时直接替换对应目录就能恢复所有数据

五、常见问题解决

启动提示「python不是内部或外部命令」

这是安装Python时没有添加环境变量,解决方法:重新运行Python安装包,选择「Modify」,下一步后勾选「Add Python to environment variables」,完成安装后重启命令提示符即可正常使用。

上传大于100MB的文件报错

打开app.py,找到app.config['MAX_CONTENT_LENGTH'] = 100 1024 1024这一行,把100改成你需要的大小,比如改成200就是支持最大200MB的文件,修改后重启系统即可生效。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统