



# File Collector - 文件收集器
基于 Flask + SQLite 的多链接文件收集系统,支持 Docker 一键部署。
## 功能特性
- **多链接管理** — 后台创建多个独立的文件收集链接,每个链接拥有唯一地址和通行证
- **通行证验证** — 上传者需输入通行证才能上传,保障收集安全
- **文件描述** — 可为每个收集链接设置描述,告知上传者所需提交的内容
- **过期时间** — 支持为链接设置有效期,到期自动停止接收文件
- **上传限制** — 可配置单次最大文件数量和单文件大小上限(GB 级别)
- **不限制文件类型** — 允许上传任意类型文件
- **记录管理** — 查看、下载、删除上传记录,支持批量删除;删除链接时文件保留
- **下载计数** — 追踪每个文件的下载次数
- **响应式 UI** — 适配桌面与移动端,微信浏览器检测提示
- **安全防护** — CSRF 保护、登录频率限制、会话固定防护、HttpOnly Cookie
- **可配置性** — 端口、数据目录、上传目录均通过环境变量配置
## 技术栈
| 组件 | 技术 |
|------|------|
| 后端 | Python 3.11 + Flask 3.0 |
| 数据库 | SQLite(WAL 模式) |
| 服务器 | Gunicorn |
| 容器化 | Docker + Docker Compose |
| 前端 | HTML / CSS / JavaScript(响应式) |
## 快速开始
### Docker 部署(推荐)
1. 创建 `compose.yml`:
`yaml
services:
file-collector:
image: infowe/file-collector:latest
container_name: file-collector
restart: unless-stopped
ports:
- "5664:5664"
environment:
- TZ=Asia/Shanghai
- PORT=5664
- DATA_DIR=/app/data
- UPLOAD_BASE=/app/uploads
volumes:
- ./data:/app/data
- ./uploads:/app/uploads
- 启动服务:
docker compose up -d
- 访问管理后台:
http://localhost:5664/admin
默认账号:admin / admin123(请及时修改密码)
从源码构建
docker compose -f docker-compose.yaml up -d --build
环境变量
| 变量 |
默认值 |
说明 |
PORT |
5664 |
服务监听端口 |
DATA_DIR |
/app/data |
数据库存储目录 |
UPLOAD_BASE |
/app/uploads |
上传文件存储目录 |
TZ |
Asia/Shanghai |
时区 |
FLASK_DEBUG |
0 |
调试模式(生产环境勿开) |
目录结构
file-collector/
**── docker-compose.yaml # 开发用 Compose(含 build)
**── compose.yml # 部署用 Compose(仅运行)
**── Dockerfile
**── entrypoint.sh
**── file-collector.tar # 导出的 Docker 镜像
**── data/ # 数据库文件(持久化卷)
**── uploads/ # 上传文件(持久化卷)
**── src/
**── app.py # 主应用
**── requirements.txt # Python 依赖
**── templates/ # 页面模板
**── base.html # 基础布局
**── collect.html # 文件收集页
**── error.html # 错误页
**── admin_login.html # 管理员登录
**── admin_dashboard.html # 控制面板
**── admin_links.html # 链接管理
**── admin_records.html # 上传记录
**── admin_settings.html # 系统设置
**── _admin_sidebar.html # 侧边栏组件
使用流程
- 登录后台 → 访问
/admin,使用管理员账号登录
- 创建链接 → 填写标题、描述、通行证和上传限制,生成收集链接
- 分发链接 → 将
/collect/<link_id> 地址和通行证发给上传者
- 收集文件 → 上传者输入通行证验证后即可上传文件
- 管理文件 → 在后台查看/下载上传的文件,支持按链接筛选
健康检查
容器内置健康检查,每 30 秒探测一次:
GET /api/status → {"status": "running", "db_ok": true}
许可证
分发,请注明出处!