上传架构 📤
当前流程:服务器中转上传(代理模式)
目前,FoomClous 采用 服务器中转 的上传策略,这种设计确保了跨平台存储的统一性与安全性。
🔄 核心步骤
- 客户端 -> 服务器:前端上传组件将文件发送到后端服务器(
/api/upload 接口)。
- 服务器缓存:后端服务器接收文件并将其保存到临时目录(
backend/uploads)。
- 服务器 -> 存储源:存储管理器 (
StorageManager) 根据当前激活的提供商,将临时文件实际推送到对应端(OneDrive, S3, WebDAV 等)。
- 清理与反馈:上传成功后,服务器会删除临时文件,并通知前端更新列表。
✅ 优势
- 极致安全:所有存储 API 密钥、Refresh Token 仅由后端持有,绝不暴露给客户端。
- 跨平台一致性:前端无需关心存储协议(S3/WebDAV/OSS),只需通过统一的 API 进行交互。
- 功能预处理:服务器可以在文件最终入库前,自动执行缩略图生成、视频转码或杀毒扫描。
⚠️ 局限性
- 流量成本:上传流量会被消耗两次(由于服务器中转)。
- 延迟增加:文件需要完整落盘服务器后再推送到第三方云端,会有一定的链路延迟。
[!NOTE]
尽管代理模式增加了服务器负载,但它极大简化了前端逻辑,并提供了最佳的隐私保护。
/ytdlp 下载后转存,同样是服务器中转
- Telegram -> 后端:你在 Telegram 中发送
/ytdlp <url>,后端接收链接并创建下载任务。
- 服务器下载缓存:后端在工作目录中创建任务临时目录(由
YTDLP_WORK_DIR 决定),然后执行 yt-dlp 将媒体下载到该目录。
- 选择主输出文件:下载完成后,从任务目录中挑选主要输出文件(通常是合并后的
mp4,或音频文件)。
- 服务器 -> 存储源:后端复用现有上传链路,通过
StorageManager 将该文件上传到“当前激活的存储提供商”(OneDrive / S3 / WebDAV / Local 等)。
- 清理与反馈:上传成功或失败后,后端会清理任务临时目录,并在 Telegram 中更新该任务的状态信息。
返回文档中心