FileBridge — 企业级安全文件共享平台,替代传统 FTP

一、概述

FileBridge 是一个基于 Web 的企业级文件共享平台,用现代化的 Vue 3 中文界面替代传统 FTP,面向需要与外部客户安全交换文件的中小企业。

产品形态为前后端分离的 Web 应用(Go + Vue 3 + PostgreSQL),支持 Docker 一键部署。系统设有三种用户角色:超级管理员(IT/运维)、项目管理员(业务人员)、客户(外部合作方),每种角色有专属界面和权限体系。

核心功能包括:

  • 项目制数据隔离 — 不同项目文件完全隔离,同项目内成员共享

  • 大文件分片断点续传 — 自动切分 5MB 分片,最大支持 2GB+ 文件,网络中断只需续传未完成部分

  • 客户上传审批工作流 — 客户上传的文件需管理员审批后才对项目其他成员可见

  • 签名下载链接 — 下载 URL 带 HMAC 时效签名,防止直链盗用

  • 全链路操作审计 — 登录/上传/下载/删除/审批等所有敏感操作均有日志记录

  • 文件过期自动清理 — 到期前 3 天通知,到期后自动隐藏

  • SFTP 协议支持 — 客户也可使用 FileZilla、WinSCP 等 SFTP 客户端连接

技术栈:后端 Go 1.22 + Gin 框架 + JWT 双 Token 认证 + bcrypt 加密 + Redis 限流;前端 Vue 3 + TypeScript + Arco Design Vue + Pinia 状态管理 + Vite 构建;数据库 PostgreSQL 16 + Redis 7;Nginx 反向代理 + Docker Compose 编排。

二、构思

灵感来源:在实际工作中,大量企业仍在使用 90 年代的 FTP 工具处理今天的企业级文件协作。设计稿传不上去、合同文件不知道被谁下载了、项目结束后文件无人清理——这些痛点在广告、建筑、法律、制造等需要频繁与外部合作方交换文件的行业尤其突出。我希望用现代 Web 技术和 AI 辅助开发,做一个"开箱即用、安全可控"的 FTP 替代品。

想解决的核心痛点

  1. 权限粗放 — 传统 FTP 只有目录级权限,无法按项目隔离数据,客户 A 可能看到客户 B 的机密文件。FileBridge 采用项目制 + 文件级三级权限模型(项目权限 → 文件级权限覆盖 → 角色权限),从根源上解决数据泄露风险。

  2. 无审计追溯 — FTP 没有操作日志,出了安全事件无法定位责任人。FileBridge 记录所有敏感操作(含操作人、IP、时间戳),满足等保、ISO 27001 等合规审计要求。

  3. 大文件传输易中断 — FTP 不支持断点续传,几百 MB 的文件网络稍有波动就前功尽弃。FileBridge 前端自动将大文件切分为 5MB 分片逐个上传,后端通过 JSONB 记录已上传分片列表,合并时按序校验,真正实现断点续传。

  4. 无审批流程 — 客户上传的文件未经审核就对所有人可见,质量失控。FileBridge 实现了完整的审批工作流:客户上传 → 状态 pending → 管理员审批/驳回(附理由)→ 站内通知实时告知上传者。

  5. 文件生命周期不可控 — 项目结束后文件残留,浪费存储也增加泄露风险。FileBridge 支持设置文件有效期,到期前 3 天自动发送提醒通知,到期后自动隐藏并清理磁盘空间。

方向选择:不做网盘(面向 C 端、功能臃肿),也不做 FTP 的简单改良,而是做一个"以项目为核心单元、以安全审计为底线"的 B2B 文件协作平台。

三、体验途径

请上传附件 HTML 文件(FileBridge-Demo.html),在浏览器中打开即可体验完整的交互流程:

  1. 登录页 — 深蓝渐变背景 + 毛玻璃卡片效果,预填演示账号(admin / admin123),点击登录即可进入

  2. 客户端 — 浏览 6 个项目卡片(智慧城市、审计报告、供应商规格书等真实业务场景)→ 进入项目查看文件列表(含待审批/已通过/已驳回状态标签)→ 模拟分片上传文件(含进度条动画)→ 生成签名下载链接 → 查看通知中心

  3. 管理后台 — 仪表盘数据概览(用户/项目/文件/存储统计 + 待审批提醒)→ 用户管理(三种角色 + 状态管理)→ 审批管理(可通过/驳回并填写理由)→ 审计日志(含操作类型筛选 + IP 记录)→ 系统设置(站点配置 + 文件限制 + SFTP 开关)

四、研发历程

本项目使用 TRAE AI 辅助开发,以下是关键开发步骤:

Step 1:需求梳理与架构设计

通过与 TRAE 对话,完成了从痛点分析到技术选型的完整架构设计。Prompt 关键词:「帮我设计一个替代传统 FTP 的企业级 Web 文件共享平台,需要项目隔离、审批流程、审计日志、大文件分片上传」。TRAE 输出了完整的技术选型方案(Go + Gin + Vue 3 + Arco Design + PostgreSQL),并给出了前后端分离的架构图和数据库 ER 设计。

Step 2:后端核心模块开发

分模块逐步实现后端代码:

  • 认证模块(auth_service.go)— JWT 双 Token(Access 15分钟 + Refresh 7天)+ bcrypt 密码加密 + Redis 登录限流(5次失败锁15分钟)

  • 项目管理(project_handler.go + project_repository.go)— 项目 CRUD + 成员权限管理 + 存储配额

  • 文件管理(file_service.go,500+ 行)— 普通上传 + 分片上传(chunk_upload_repository.go 用 JSONB 记录分片状态)+ 签名下载(HMAC-SHA256)+ 批量 ZIP 打包

  • 审批流程 — 客户上传文件状态 pending → 管理员 approve/reject → 通知上传者

  • 审计日志(audit_logs 表)— 全操作记录,含 user_id、action、resource_type、ip、detail

  • 文件过期(expiry_service.go)— 定时任务检查即将到期文件,发送通知,到期后自动清理

  • SFTP 服务(sftp_service.go)— 基于 pkg/sftp 库,自动生成 RSA 主机密钥,目录自动隔离为授权项目

Step 3:前端界面开发

使用 Vue 3 + Arco Design Vue 构建双端界面:

  • 客户端(ClientLayout.vue)— 顶部导航 + 项目卡片列表(ProjectsView.vue)+ 文件浏览器(FilesView.vue,19KB,含分片上传组件)+ 通知中心

  • 管理后台(AdminLayout.vue,深色侧边栏)— 仪表盘(DashboardView.vue,统计卡片 + 存储用量图表 + 操作时间线)+ 用户管理 + 项目文件管理(ProjectFilesView.vue,30KB,主从布局)+ 审批管理 + 审计日志 + 系统设置

Step 4:Docker 部署与联调

编写 Docker Compose 编排文件(docker-compose.yml),包含 PostgreSQL 16 + Redis 7 + Go 后端 + Nginx 前端四个容器,实现一键部署。后端容器同时暴露 HTTP 8080 和 SFTP 2222 端口。TRAE 帮助排查了容器间网络配置和数据库健康检查依赖等问题。

开发过程中的调试经验

  • 分片上传的断点续传逻辑调试了较长时间——关键是后端 chunk_uploads 表用 JSONB 记录已上传分片列表,前端分片上传完成后调用 /chunks/complete 接口合并,合并时按序校验每个分片是否存在

  • 签名下载链接的 HMAC-SHA256 生成需要前后端完全一致的时间戳格式和参数排序,否则签名校验失败导致下载 403

  • Arco Design 的文件上传组件默认不分片,需要自定义 beforeUpload 钩子拦截大文件(>50MB)走分片上传逻辑

  • 文件过期定时任务(expiry_service.go)使用了 Go 的 time.Ticker,每隔 1 小时扫描一次,需要提前 3 天查找即将到期的文件并批量发送通知

项目代码结构

FTP/
├── backend/               # Go 后端
│   ├── cmd/server/main.go          # 主入口 + 数据库迁移
│   ├── internal/handler/           # HTTP 路由处理器(7个模块)
│   ├── internal/service/           # 业务逻辑层(8个服务)
│   ├── internal/repository/        # 数据访问层(6个仓库)
│   └── internal/middleware/        # JWT认证 + CORS中间件
├── frontend/              # Vue 3 前端
│   └── src/views/                  # 页面视图(客户端5页 + 管理后台8页)
├── deploy/                # Docker Compose + Nginx配置
└── docs/                  # PRD + 部署文档

FileBridge-Demo.zip (12.3 KB)这个是项目的demo 请下载打开 .2948212639142715:e742755f57965d7074f9b738a5bbae67_69eeda5741380d69f0b4282d.69eedcc641380d69f0b428ce.69eedcc506fbfa62bdfea320:Trae CN.T(2026/4/27 11:49:26).2948212639142715:9368642817855bfd150c76492ac14d8e_69ef8489378a68bb11acca48.69f0d814378a68bb11acce70.69f0d814c1307377ffec2bbc:Trae CN.T(2026/4/28 23:53:56).2948212639142715:0e254174a0db23c5811f4d1f09080718_69ef8489378a68bb11acca48.69f0c56c378a68bb11accbb6.69f0c56cc1307377ffec2bb7:Trae CN.T(2026/4/28 22:34:20)

1 个赞

Go+Vue3+PostgreSQL 的 B2B 文件协作平台,三级权限模型(项目权限->文件级覆盖->角色权限)解决 FTP 目录级权限粗放导致客户互见机密文件,大文件 5MB 分片断点续传+HMAC-SHA256 签名下载链接防直链盗用+客户上传审批工作流,全链路审计日志满足等保/ISO 27001,这个企业级安全设计太到位了!同为 ToB 方向,你的文件共享和我的组网工具刚好互补。

我做的 VirtuaMesh 也是企业级组网工具,3 行命令 5 分钟部署,0 节点限制。欢迎技术交流:【学习工作】VirtuaMesh:3 行命令替代年费 ¥12,000 的组网方案,异地团队 5 分钟互通 ,相互学习,求投票和留言支持~咱俩的方案合在一起就是完整的企业级文件共享+组网解决方案了。

投了,希望可以相互支持

感觉和nas拼赛道啊~审计有点意思。

Go后端这套分层架构写得挺规范的,JWT双Token + Redis限流 + HMAC签名下载,该有的安全机制都到位了。分片上传用JSONB记录状态做断点续传这个细节不错,不是那种前端切一下后端合并就完事的玩具实现。SFTP协议支持也实用,给不想用Web界面的客户留了后路。

已投票支持一下,互相帮助!我也参赛,做的是基于马斯洛需求层次的AI价值判断引擎,有兴趣可以来看看帖子:【社会服务赛道】一个懂你的 AI:用自研心理学算法让 AI "理解"你的真实需求 (含装B检测 人格模拟等趣味玩法) 在线体验:http://122.51.21.225

FileBridge 最值得评委注意的是“客户上传之后先进入审批和审计”,这让它和普通网盘或 FTP 替代品区分开了:外部客户能传文件,但文件什么时候对项目成员可见、谁审批了、从哪个 IP 做过下载,都被放进业务流程里,安全性不是停在登录权限这一层。建议把体验说明再分成两栏:左边写附件 HTML 能验证的静态流程,比如 admin 登录、项目卡片、上传进度、审批、审计日志;右边写完整工程能力需要真实后端才能验证,比如分片断点续传、HMAC 签名校验、Docker 部署、SFTP 和过期清理。如果源码仓库或 docker-compose 可以公开,也可以放一个只读链接,评委会更容易判断完成度。我们在生活娱乐赛道做《衍境》,偏互动影游创作系统;题材不同,就透明放个链接在这里:【生活娱乐赛道】衍境 Demo:EvoMap 驱动的互动影游智能体创作系统 如果后面要做组会展示,建议再补一张“失败样本→复活分支→结果变化”的总览图,这样观众会更容易一眼看懂。