mirror of
https://github.com/RhenCloud/Cloud-Index.git
synced 2025-12-06 23:36:10 +08:00
6.3 KiB
6.3 KiB
title, createTime, permalink
| title | createTime | permalink |
|---|---|---|
| 项目介绍 | 2025/11/09 00:26:55 | /guide/introduction |
项目介绍
项目概述
Cloud Index 是一个现代化的、功能完整的云存储文件管理系统。它提供了一个统一的文件浏览、管理和共享界面,支持多种云存储后端,使用户能够轻松地在不同的云存储服务之间切换。
在线演示
你可以在在线演示中体验 Cloud Index 的主要功能(浏览、预览、上传、下载等)。
- Demo 地址:https://r2.demo.cloud-index.rhen.cloud(使用Cloudflare R2作为存储后端)
- Demo 地址:https://github.demo.cloud-index.rhen.cloud(使用Github Repository作为存储后端)
项目特点
1. 多后端支持
通过灵活的架构设计,支持多种云存储服务:
- Cloudflare R2 - 低成本的S3兼容对象存储
- Amazon S3 - 业界标准的对象存储服务
- GitHub Repository - 将GitHub仓库作为存储后端
- GitHub Release - 利用Release API存储文件(开发中)
后端可以通过简单的配置进行切换,无需修改代码。
2. 完整的文件操作功能
提供常见的文件管理功能:
- 📁 目录浏览与导航
- 📝 文件详情查看(名称、大小、修改时间等)
- ⬆️ 文件上传
- 🗑️ 文件删除
- ✏️ 文件/文件夹重命名
- 📂 创建新文件夹
- 📋 复制文件/文件夹
- 🔄 移动文件/文件夹
3. 智能媒体处理
- 🖼️ 自动生成缩略图,支持缓存
- 👁️ 图片预览
- 📊 文件类型识别和对应图标
- 🎨 美观的预览界面
4. 分享与访问
- 🌐 生成公共访问URL(如果存储支持)
- 🔗 预签名URL支持,具有过期时间控制
- 📱 移动设备友好的响应式设计
- 🌙 深色模式支持
5. 企业级特性
- 🔐 环境变量配置管理
- 📊 文件大小格式化显示
- 🌍 国际化支持(中文/英文)
- ⚡ 高性能缓存机制
项目架构
核心组件
Cloud-Index/
├── app.py # Flask 应用主入口
├── handlers/
│ └── routes.py # 路由处理
├── storages/
│ ├── base.py # 存储基类
│ ├── factory.py # 存储工厂(策略模式)
│ ├── r2.py # Cloudflare R2 实现
│ ├── s3.py # Amazon S3 实现
│ └── github.py # GitHub 存储实现
├── templates/ # HTML 模板
│ ├── base.html # 基础模板
│ ├── index.html # 主页面
│ └── footer.html # 页脚
└── static/ # 静态资源
├── css/ # 样式表
├── js/ # JavaScript 文件
└── thumbs/ # 缩略图缓存
架构模式
- 工厂模式 -
StorageFactory负责根据配置创建相应的存储实现 - 策略模式 - 不同的存储后端实现相同的
BaseStorage接口 - MVC模式 - 使用 Flask 框架实现标准的 MVC 架构
技术栈
| 组件 | 技术 | 说明 |
|---|---|---|
| 后端框架 | Flask | 轻量级 Python Web 框架 |
| 前端 | HTML5/CSS3/JS | 原生 Web 技术 |
| 对象存储 | AWS S3 SDK | boto3 库 |
| 文件处理 | Pillow | 图片处理库 |
| API调用 | requests | HTTP 库 |
| 部署 | Docker/Vercel | 容器化和Serverless部署 |
工作流程
文件浏览流程
用户请求
↓
Flask 路由处理
↓
存储工厂获取对应后端
↓
执行存储操作(list/get/delete等)
↓
模板渲染
↓
返回给用户
文件上传流程
用户上传文件
↓
Flask 接收请求
↓
验证文件
↓
调用存储后端上传
↓
返回结果
缩略图生成流程
请求图片缩略图
↓
检查缓存
↓
缓存命中? → 返回缓存
↓ 否
获取原始文件
↓
使用 Pillow 生成缩略图
↓
保存到本地缓存
↓
返回缩略图
存储后端选择指南
Cloudflare R2
最佳用途: 低成本、小企业、边缘计算优先
- 💰 价格最低(存储费用免费,仅收取请求费)
- 🚀 全球 CDN 加速
- 🔄 S3 API 兼容
- 适合: 静态资源、备份、媒体库
Amazon S3
最佳用途: 大企业、高可用性、完整生态
- 📊 功能最完整
- 🔒 安全性最高
- 🌍 全球可用
- 💼 企业级支持
- 适合: 生产环境、大规模应用、合规要求高
GitHub Repository
最佳用途: 轻量级、免费、版本控制
- 🆓 完全免费(利用GitHub存储)
- 📝 自动版本控制
- 🔐 访问权限管理
- 易于备份和迁移
- 适合: 文档、配置文件、小文件、开源项目
性能指标
- 文件列表响应 < 100ms(本地缓存)
- 缩略图生成 平均 50-200ms(取决于图片大小)
- 文件上传 无限制(取决于网络)
- 并发连接 支持数百并发请求
- 缓存有效期 可配置(默认1小时)
与其他解决方案对比
| 特性 | Cloud Index | Nextcloud | MinIO | S3 Web UI |
|---|---|---|---|---|
| 多后端支持 | ✅ | ❌ | ❌ | ❌ |
| 易部署 | ✅ | ❌ | ⚠️ | ❌ |
| 低成本 | ✅ | ❌ | ⚠️ | ❌ |
| 功能完整度 | ✅ | ✅✅ | ✅ | ⚠️ |
| 学习曲线 | 低 | 高 | 中 | 低 |
未来规划
- GitHub Release 存储支持
- 基于数据库的用户权限管理
- 操作日志记录与审计
- Office 文档预览支持
- 视频预览支持
- 文件夹打包下载
- API 文档完善
- WebDAV 支持
- 搜索功能增强
- 分享链接和权限管理
许可证
GPLv3 License - 详见项目根目录的 LICENSE 文件