这是一个基于Flask框架开发的文件上传与管理系统,集成Alist WebDAV进行文件存储,支持用户认证、文件分类、缩略图生成和权限管理等功能。
- 支持多种文件类型上传(图片、视频、压缩包等)
- 文件存储在Alist WebDAV,节省本地存储空间
- 自动为图片生成缩略图,便于预览
- 基于用户角色的权限管理(管理员和普通用户)
- 普通用户仅能管理自己上传的文件
- 文件列表分页展示,支持批量删除操作
- 支持文件备注功能(如压缩包密码等信息)
- 按日期自动组织文件存储目录
- Python 3.6+
- Alist 服务(用于WebDAV存储)
-
克隆或下载项目代码
-
安装依赖包
pip install flask flask-sqlalchemy pillow requests webdav3-client- 初始化数据库 数据库会在首次运行时自动创建(SQLite),无需额外操作
在代码中需要根据实际情况修改以下配置项:
# Alist WebDAV配置
ALIST_CONFIG = {
'host': 'http://127.0.0.1:5244/dav/', # 你的Alist WebDAV地址(必须以/结尾)
'user': '34', # Alist用户名
'password': '1' # Alist密码
}
# 管理员账户配置
ADMIN_USER = '?' # 替换为实际管理员用户名
ADMIN_PWD = '?' # 替换为实际管理员密码
# 密钥配置(重要!)
app.secret_key = 'your-secure-secret-key-here-123456' # 务必修改为随机密钥其他可配置项:
- 最大文件上传大小(默认1600MB)
- 允许的文件类型
- 缩略图尺寸(默认200px)
- Cookie有效期(默认30天)
- 启动应用
python app.py-
访问系统 在浏览器中访问 http://localhost:5678
-
登录系统
- 管理员账户:使用配置的ADMIN_USER和ADMIN_PWD
- 普通用户:默认账户123/123(可在代码中修改)
-
上传文件
- 点击上传区域选择文件
- 可选:添加文件备注(如压缩包密码)
- 点击上传按钮完成上传
-
管理文件
- 点击文件名可下载文件
- 勾选文件后点击删除按钮可批量删除
- 管理员可删除所有文件,普通用户仅能删除自己上传的文件
project/
├── app.py # 主应用程序
├── instance/
│ └── file.db # SQLite数据库文件
├── static/
│ └── thumbnails/ # 缩略图存储目录
├── templates/ # HTML模板文件
│ ├── index.html # 首页(文件列表)
│ └── login.html # 登录页面
└── temp/ # 临时文件目录
- 首次使用前务必修改默认密钥和管理员密码,确保系统安全
- 确保Alist服务正常运行且WebDAV配置正确
- 大文件上传可能需要调整超时设置
- 定期备份数据库文件(instance/file.db)以防数据丢失
- 缩略图仅对图片文件生成,视频和压缩包无缩略图
- 文件上传失败:检查Alist服务是否正常,WebDAV配置是否正确,文件大小是否超过限制
- 无法删除文件:普通用户只能删除自己上传的文件,管理员无此限制
- 缩略图不显示:检查图片格式是否支持,临时目录权限是否正确
如有其他问题,请查看应用日志或检查相关服务配置。