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

从零搭建轻量综合档案管理系统与本地利用实操指南

发布时间:2026年06月07日 18:15:12 浏览量:0

准备工作

需先完成基础环境配置,所有命令直接在终端/CMD中执行:

系统核心功能搭建

1. 创建项目基础文件

执行命令创建项目目录并进入:

在项目目录下创建名为app.py的文件,将下方完整代码复制到该文件中:

```python from flask import Flask, request, jsonify, send_file, render_template_string import os import chardet import json app = Flask(__name__) UPLOAD_FOLDER = './uploads' INDEX_FILE = './archive_index.json' ALLOWED_EXTENSIONS = {'pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'jpg', 'png'} MAX_CONTENT_LENGTH = 100 1024 1024 单文件最大100MB 初始化存储目录与索引文件 os.makedirs(UPLOAD_FOLDER, exist_ok=True) if not os.path.exists(INDEX_FILE): with open(INDEX_FILE, 'w') as f: json.dump({}, f) def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('/') def index(): with open(INDEX_FILE, 'r') as f: archive_index = json.load(f) 极简前端页面,无需额外资源 html = ''' 轻量档案管理系统 综合档案管理系统

上传档案

检索档案

''' return render_template_string(html) @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: return jsonify({'code':400,'msg':'未选择文件'}),400 file = request.files['file'] if file.filename == '': return jsonify({'code':400,'msg':'文件名为空'}),400 if allowed_file(file.filename): 保存文件到存储目录 filename = file.filename save_path = os.path.join(UPLOAD_FOLDER, filename) file.save(save_path) 更新索引文件 with open(INDEX_FILE, 'r') as f: index_data = json.load(f) index_data[filename] = save_path with open(INDEX_FILE, 'w') as f: json.dump(index_data, f) return jsonify({'code':200,'msg':'上传成功'}),200 return jsonify({'code':400,'msg':'文件类型不支持,仅允许:pdf、doc、docx、xls、xlsx、txt、jpg、png'}),400 @app.route('/search') def search_archive(): keyword = request.args.get('keyword', '').lower() with open(INDEX_FILE, 'r') as f: index_data = json.load(f) matched = [{'name':name} for name in index_data.keys() if keyword in name.lower()] return jsonify(matched) @app.route('/view/') def view_archive(filename): with open(INDEX_FILE, 'r') as f: index_data = json.load(f) if filename not in index_data: return '文件不存在',404 file_path = index_data[filename] ext = filename.rsplit('.',1)[1].lower() 根据文件类型返回对应展示 if ext in ['jpg','png']: return f'' elif ext == 'txt': with open(file_path, 'rb') as f: raw = f.read() encoding = chardet.detect(raw)['encoding'] content = raw.decode(encoding, errors='ignore') return f'
{content}
' else: 其他类型直接触发下载 return send_file(file_path, as_attachment=True) @app.route('/download/') def download_archive(filename): with open(INDEX_FILE, 'r') as f: index_data = json.load(f) if filename not in index_data: return '文件不存在',404 return send_file(index_data[filename], as_attachment=True) if __name__ == '__main__': app.config['MAX_CONTENT_LENGTH'] = MAX_CONTENT_LENGTH app.run(debug=False) ```

系统启动与日常操作

启动服务:在项目目录执行命令:flask run --host=0.0.0.0 --port=5000,终端输出提示:Running on http://127.0.0.1:5000,即启动成功

档案上传操作

打开浏览器访问http://localhost:5000,进入系统首页:点击上传区域的“选择文件”,勾选符合支持类型的档案,点击“上传”按钮,提示“上传成功”即完成操作,档案自动保存到uploads目录,索引同步更新

档案检索与利用操作

在检索框输入档案名称的关键词,点击“检索”按钮,下方会显示匹配的档案列表:

  • 若为txt、jpg、png:直接在线预览
  • 其他格式(pdf、word、表格):自动触发下载,下载后可本地查看

日常维护注意事项

定期备份两个关键文件:uploads目录(存储所有实际档案)和archive_index.json(存储档案索引),备份到其他独立存储位置,防止文件丢失;不要存放涉密或敏感文件,该系统仅用于本地轻量档案管理;若需调整支持的文件类型,可修改代码中ALLOWED_EXTENSIONS集合,添加或删除对应文件后缀。

音频档案管理:别让宝贵的声音资料变成一堆乱麻
音频档案管理:别让宝贵的声音资料变成一堆乱麻
你是不是也这样?手机里存了几百个录音文件,有工作会议、孩子第一次叫妈妈、重要的电话录音,还有自己瞎哼哼的旋律。想找半年前那次关键的会议记录?得,在文件海洋里翻个半小时,最后可能还找错了。更扎心的是,有...
2026年06月07日 18:15:12
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818