收起左侧

最近公司需要一个文件收集工具,于是就做了一个

0
回复
21
查看
[ 复制链接 ]

6

主题

13

回帖

0

牛值

系统先锋体验团🛩️

ScreenShot_2026-05-25_013729_190.png

2.png

3.png

4.png

# 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
  1. 启动服务:
docker compose up -d
  1. 访问管理后台: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    # 侧边栏组件

使用流程

  1. 登录后台 → 访问 /admin,使用管理员账号登录
  2. 创建链接 → 填写标题、描述、通行证和上传限制,生成收集链接
  3. 分发链接 → 将 /collect/<link_id> 地址和通行证发给上传者
  4. 收集文件 → 上传者输入通行证验证后即可上传文件
  5. 管理文件 → 在后台查看/下载上传的文件,支持按链接筛选

健康检查

容器内置健康检查,每 30 秒探测一次:

GET /api/status → {"status": "running", "db_ok": true}

许可证

分发,请注明出处!


收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则