一、前期环境准备
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的文件,修改后重启系统即可生效。