文件收集器 (File Collector)
基于 Flask + SQLite 的多链接文件收集系统,专为飞牛 fnOS 打造
简介
https://github.com/Contribuv/file-collector
文件收集器是一个轻量级 Web 应用,管理员可在后台创建多个独立的收集链接,每个链接拥有独立的通行证、上传限制和有效期。每个链接自动生成收集页和分享页两种模式,收集者通过收集页上传文件,其他人通过分享页浏览和下载文件。非常适合团队协作、作业收集、资料汇总、文件分发等场景。
适用平台: 飞牛 fnOS Native 应用(.fpk 格式),也可 Docker 部署。支持 x86 / ARM / LoongArch / RISC-V 全平台。
功能特性
核心功能
| 功能 |
说明 |
| 🔗多链接管理 |
创建/编辑/启用/禁用/删除,每个链接生成 8 位短 ID |
| 🔑独立通行证 |
每个链接独立的访问密码,Session 级别缓存 |
| 📤文件收集 |
拖拽 + 点击上传,进度条实时显示,支持批量上传 |
| 📥文件分享 |
同一链接生成分享页,其他人可浏览、下载和删除文件 |
| 📏文件限制 |
自定义单文件大小上限(GB)和单次上传数量上限 |
| ⏱️有效期控制 |
设置链接过期时间,到期自动失效 |
| 📋上传历史 |
收集者和管理员均可查看/下载已提交文件 |
| 🗑️文件管理 |
上传者可删除自己的记录,管理员支持批量删除 |
| 📦数据备份 |
一键下载/导入 SQLite 数据库,自动验证和备份旧库 |
| 🔒安全防护 |
CSRF 保护、登录频率限制、通行证验证速率限制、会话安全 |
| 📱响应式 UI |
桌面和移动端完美适配,微信浏览器自动提示跳转 |
| 🎨深度定制 |
自定义站点标题、登录提示、页尾文字、首页开关 |
管理员后台
- 仪表盘 — 总览统计(链接数/记录数/存储用量/活跃链接)+ 最近上传
- 收集链接 — 创建、编辑、启停、删除、一键复制分享链接
- 上传记录 — 分页浏览、按链接过滤、批量删除、下载文件
- 系统设置 — 账号密码修改、默认上传参数、通行证有效期、数据库备份恢复
- 系统信息 — 实时显示数据库路径、上传目录、监听端口
快速开始
方式一:fnOS 应用商店安装
- 下载
.fpk 安装包
- 在 fnOS 应用管理中点「手动安装」,选择
.fpk 文件
- 安装向导中填写上传文件存储目录(绝对路径,如
/vol1/收集文件)
- 安装完成后访问
http://[NAS_IP]:5557/admin
⚠️ 注意:此应用强制使用 IP+5557 访问,请使用 Lucky 反代访问!
默认账户
⚠️ 首次登录后请立即修改密码!
技术架构
file-collector/
**── app/
** **── server/
** ** **── app.py # Flask 主应用(路由、数据库、业务逻辑)
** ** **── templates/ # Jinja2 模板(10 个页面)
** ** **── static/ # CSS、图片、图标
** **── ui/ # 桌面图标资源
**── cmd/
** **── main # 生命周期管理(start/stop/status/uninstall)
** **── install_init # 安装前初始化
** **── uninstall_callback # 卸载后清理
**── config/
** **── privilege # 运行权限配置
** **── resource # 共享目录声明
**── wizard/
** **── install # 安装向导配置
**── manifest # 应用元信息
**── logo.png # Logo
**── README.md
| 组件 |
技术 |
| Web 框架 |
Flask 3.0.0 |
| 数据库 |
SQLite(WAL 模式 + 外键约束) |
| 密码哈希 |
Werkzeug Security |
| 生产部署 |
Gunicorn(fnOS 内) |
| Python |
3.12+ |
收集与分享(双模式)
每个链接自动生成两个独立页面:
| 模式 |
地址 |
用途 |
功能 |
| 📤收集页 |
/collect/ |
文件上传 |
拖拽上传、批量提交、进度显示、历史记录 |
| 📥分享页 |
/share/ |
文件分发 |
浏览文件列表、下载文件、删除(可选) |
- 两个页面使用同一通行证,验证后在有效期(可配)内免重复输入
- 分享页不含上传功能,适合将已收集文件开放给团队查阅下载
- 管理员后台一键复制收集链接和分享链接,各带简易指引
- 微信浏览器访问时自动提示「在浏览器中打开」
环境变量
| 变量 |
用途 |
默认值 |
DATA_DIR |
数据库存储目录 |
$TRIM_DATA_SHARE_PATHS/data |
UPLOAD_BASE |
上传文件存储根目录 |
$TRIM_DATA_SHARE_PATHS/uploads |
PORT |
监听端口 |
5557 |
FLASK_DEBUG |
调试模式 |
0 |
数据库持久化: 使用 TRIM_DATA_SHARE_PATHS(飞牛官方应用文件目录),安装时自动分配,更新/重装不会丢失数据。
API
https://github.com/Contribuv/file-collectorapi 健康检查
GET /api/status
响应示例:
{
"status": "running",
"db_ok": true,
"upload_dir_exists": true
}
收集页
| 方法 |
路径 |
说明 |
GET |
/collect/ |
收集页面(通行证 + 上传) |
POST |
/collect//verify |
验证通行证 |
POST |
/collect//logout |
退出通行证 |
POST |
/collect//upload |
上传文件(multipart) |
GET |
/collect//records |
获取上传历史(JSON) |
GET |
/collect//download/ |
下载已上传文件 |
POST |
/collect//delete_record/ |
删除单条记录 |
分享页
更新日志
v1.1.30
- 修复链接管理页分享/收集按钮
Uncaught SyntaxError(tojson 双引号在 * 内截断 HTML 属性)
- 改为
data-* 属性传参,避免内联 JS 注入问题
v1.1.29
- 上传文件保持原文件名,同名冲突提示"文件名已存在"并禁止上传
- 后台设置新增「禁止上传的文件类型」配置,管理员可自定义禁止的扩展名
- 留空则使用默认危险类型拦截列表(.exe .php .sh 等)
v1.1.28
- 通行证输入框改为密码模式(
type="password"),防窥屏脱敏
- 全项目代码**与修复(变量位置、死代码标注等)
- 补充缺失 CSS 工具类
.text-center
- 累积更新与稳定性优化
v1.1.27
v1.1.26
v1.1.25
- 后台链接管理去除明文通行证列,改用复制链接时带出通行证
- 优化链接表格列宽分配(
table-layout: fixed),PC/移动端排版更协调
v1.1.24
v1.1.23
- 重新设计收集页和分享页通行证验证 UI
- 锁图标 + 标题「验证通行证」+ 链接名称提示
- 圆角胶囊输入框 + 圆圈箭头提交按钮,一键回车验证
- 错误时输入框抖动反馈 + 按钮防重复点击
- PC/移动端自适应
v1.1.22
- 修复
/admin/records PC 端表格溢出(IPv6 等长内容截断 + 固定列宽布局)
- Dashboard 首页表格同步修复
- 启用 Werkzeug ProxyFix 中间件,反向代理下正确获取真实客户端 IP
- 统一全局版本号
v1.1.19
- 修复后台首页最近上传表格 PC 端显示不全的问题
- 采用 PC 完整表格 + 移动端卡片的双模式布局,与 /admin/records 一致
v1.1.18
- 修复 SESSION_COOKIE_SECURE 在模块加载时引用 request.headers 导致 RuntimeError 的问题
- 改为 before_request 钩子动态设置,避免无请求上下文时崩溃
v1.1.17
- 安全加固:文件删除路径遍历防护(高危)
- 全加固:数据库还原防篡改、重置 Secret Key
- 安全加固:默认密码强制跳转修改页
- 安全加固:添加 CSP/Frame/Content-Type 等安全响应头
- 安全加固:拦截 .exe/.php/.sh 等危险文件类型上传
- 安全加固:密码要求至少8位且含字母+数字
- 安全加固:IP 获取优先使用反向代理头
- 系统信息页面路径脱敏,不暴露完整路径
- 上传大小硬限制 64GB 防止恶意耗尽磁盘
v1.1.16
- 修复复制链接时通行证显示为哈希值的问题
- 新增 passcode_plain 字段存储明文,复制链接时正确显示原始通行证
v1.1.15
v1.1.14
- 全面安全加固;修复 XSS 漏洞;修复路径遍历;通行证哈希存储;CSRF 保护;文件名防覆盖;上传频率限制
v1.1.11
- 完善升级/卸载数据保护机制
- 升级前自动备份数据库到安全位置
- 升级后验证数据库完整性并记录统计信息
- 卸载时保留数据库和上传文件,不再强制清理
- 首次安装与升级安装自动区分,升级时保留所有已有设置
v1.1.10
- 系统设置新增自定义上传路径
- 底部系统信息跟随自定义路径动态显示
- 需手动在飞牛应用设置中授权自定义文件夹
v1.1.9
- 重设计上传记录页:PC 表格 + 移动端卡片双布局
- 删除按钮改为圆形 × 图标,hover 红底
- 文件名列加宽至 360px,解决溢出问题
- 表头新增全选 checkbox
v1.1.8
- 上传文件存储重构至 data-share 目录
- 数据库保持 TRIM_PKGVAR 私有目录
- 移除多余共享目录声明
v1.1.7
- 后台新增数据库管理卡片,支持一键备份和导入恢复
- 导入时自动验证表结构,导入前自动备份当前数据库
v1.1.6
- 新增首页介绍页(可开关)
- 新增通行证有效期配置
- 链接管理新增允许上传者删除选项
v1.1.5
- 新增公网网址配置,支持反向代理场景
- 新增页尾自定义文字
v1.1.4
- 新增全平台支持:x86、ARM、LoongArch、RISC-V(
platform=all)
v1.1.3
- 清理冗余 CSS 代码,统一后台管理表格样式体系
- 上传记录页复用仪表盘
dash-records 样式
v1.1.2
- 后台 UI 风格统一:上传记录页沿用仪表盘表格样式
- 修复移动端操作按钮大小不一致
- collect/share 页底部固定居中
v1.1.1
- 统一后台 UI 风格,上传记录页沿用仪表盘表格样式
- 修复移动端操作按钮大小不一致
- collect/share 页底部固定居中
v1.1.0
- 全面重新设计 UI,iOS 风格圆角卡片 + 毛玻璃导航栏
- 全局禁止缩放 + 安全区域适配,移动端体验如原生 APP
v1.0.68
- 移动端上传记录改为简洁列表风格(参考"最近上传")
- 文件名蓝色大标题 + 元信息用 · 分隔一行排列
- 移动端隐藏 checkbox 和操作列,界面干净清爽
v1.0.67
- 重写上传记录表格布局,改用
table-layout: auto 自适应列宽
- 时间列保证完整显示不再截断,文件名列自动伸缩
- 移动端卡片布局重设计:文件名大标题 + 元信息网格 + 操作行分离
- 移除移动端 checkbox,界面更简洁
v1.0.65
v1.0.64
- 优化后台管理界面操作按钮颜**分(分享/收集/编辑/停用/启用/删除各具独立颜色)
- 修复多处 console.log 模板变量错误
- 优化表格响应式布局,修复移动端溢出问题
- 改进 settings-grid、dash-records、info-row 等多处排版
- 优化上传记录页列表宽度分配,修复时间列显示不全
v1.0.63
- 数据库改用
TRIM_DATA_SHARE_PATHS 飞牛官方应用文件路径
- 系统信息显示干净的原始路径
v1.0.59–1.0.62
- 新增文件分享功能 — 每个链接自动生成收集页和分享页双模式
- 修复更新/重装丢数据 BUG,数据库路径改为应用自身目录
- 分享链接 URL 修正(collect → share)
- 系统设置增加备份提醒和上传目录授权说明
v1.0.36
- 系统信息新增数据库路径实时显示
- 数据库存储遵循 fnOS 规范
- 上传目录配置改为安装时必填
开发者
License
[](https://github.com/Contribuv/file-collector#license)
MIT License
Copyright © 2025 豪子