Files
Cloud-Index/docs/guide/introduction.md
2025-11-09 14:21:55 +08:00

229 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 项目介绍
createTime: 2025/11/09 00:26:55
permalink: /guide/introduction
---
# 项目介绍
## 项目概述
**Cloud Index** 是一个现代化的、功能完整的云存储文件管理系统。它提供了一个统一的文件浏览、管理和共享界面,支持多种云存储后端,使用户能够轻松地在不同的云存储服务之间切换。
## 在线演示
你可以在在线演示中体验 Cloud Index 的主要功能(浏览、预览、上传、下载等)。
- Demo 地址:[https://r2.demo.cloud-index.rhen.cloud](https://r2.demo.cloud-index.rhen.cloud)使用Cloudflare R2作为存储后端
- Demo 地址:[https://github.demo.cloud-index.rhen.cloud](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/ # 缩略图缓存
```
### 架构模式
1. **工厂模式** - `StorageFactory` 负责根据配置创建相应的存储实现
2. **策略模式** - 不同的存储后端实现相同的 `BaseStorage` 接口
3. **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 文件
## 相关链接
- 📖 [GitHub 仓库](https://github.com/RhenCloud/Cloud-Index>)
- 🐛 [问题报告](https://github.com/RhenCloud/Cloud-Index/issues>)
- 💬 [讨论区](https://github.com/RhenCloud/Cloud-Index/discussions>)