# 📁 项目文件管理器

一个功能强大的Web文件管理器，支持文件上传、下载、批量操作和文件夹压缩下载。

## ✨ 主要功能

### 🌐 两种访问方式

1. **Web界面** - 图形化文件管理界面（推荐）
   - 地址：`https://your-domain.com/public/file-manager.html`
   - 特点：直观易用，支持拖拽上传

2. **REST API** - 完整的文件管理API
   - 基础地址：`https://your-domain.com/api/v1/files`
   - 特点：可集成到任何应用

### 🚀 核心功能

#### 文件操作
- 📤 **上传文件** - 支持拖拽上传、多文件上传
- 📥 **下载文件** - 单文件直接下载
- 📦 **文件夹压缩下载** - 一键下载整个文件夹为ZIP
- 📋 **批量下载** - 选择多个文件/文件夹统一打包下载
- 📁 **创建文件夹** - 新建目录结构
- ✏️ **重命名** - 文件和文件夹重命名
- 🗑️ **删除** - 安全删除文件和文件夹
- 🔍 **搜索** - 快速搜索文件
- 📊 **文件信息** - 查看文件详细信息和预览

#### 批量操作
- ☑️ **全选/取消全选** - 快速选择所有文件
- 📦 **批量下载** - 多文件打包下载
- 🎯 **批量管理** - 支持后续扩展（批量删除、移动等）

## 🛠️ API 接口

### 文件列表
```http
GET /api/v1/files/list?path=uploads&recursive=false
```

### 文件上传
```http
POST /api/v1/files/upload
Content-Type: multipart/form-data
```

### 文件下载
```http
GET /api/v1/files/download/{file_path}
```

### 文件夹压缩下载
```http
POST /api/v1/files/download-folder-zip
Content-Type: application/json
{
  "path": "uploads"
}
```

### 批量压缩下载
```http
POST /api/v1/files/download-multiple-zip
Content-Type: application/json
{
  "paths": ["uploads", "data/123"],
  "filename": "batch_download.zip"
}
```

### 其他接口
- `POST /api/v1/files/create-folder` - 创建文件夹
- `POST /api/v1/files/rename` - 重命名
- `POST /api/v1/files/move` - 移动文件
- `POST /api/v1/files/copy` - 复制文件
- `DELETE /api/v1/files/delete` - 删除文件
- `GET /api/v1/files/search` - 搜索文件
- `GET /api/v1/files/info/{path}` - 获取文件信息

## 🎨 界面特性

### 响应式设计
- ✅ 桌面端完整功能
- ✅ 移动端友好界面
- ✅ 自适应布局

### 用户体验
- 🎨 现代化UI设计
- 📱 直观的图标和颜色
- ⚡ 快速响应的交互
- 💬 友好的提示信息

### 高级功能
- 📁 面包屑导航
- 🔍 实时搜索过滤
- 📊 文件信息预览
- 🎯 智能文件类型识别

## 🔧 技术特性

### 安全性
- 🛡️ 路径验证和限制
- 📏 文件大小限制（500MB）
- 🔢 文件数量限制（10000个）
- 🚫 隐藏文件过滤

### 性能优化
- ⚡ 异步文件操作
- 📦 内存中ZIP压缩
- 🔄 流式文件下载
- 💾 智能缓存控制

### 兼容性
- 🌐 标准WebDAV协议
- 📱 所有现代浏览器
- 🔧 可扩展的API设计
- 📊 完整的错误处理

## 📝 使用方法

### 快速开始
1. 访问文件管理器：`https://your-domain.com/public/file-manager.html`
2. 使用拖拽或点击按钮上传文件
3. 点击文件夹旁的"下载ZIP"按钮下载整个文件夹
4. 使用"批量操作"模式选择多个文件统一下载

### 高级用法
1. 点击"批量操作"进入批量选择模式
2. 使用"全选"快速选择所有文件
3. 混合选择文件和文件夹进行批量下载
4. 使用搜索功能快速定位文件

## 🚀 部署说明

### 环境要求
- Python 3.8+
- FastAPI
- 现代浏览器

### 部署步骤
1. 安装依赖：`pip install fastapi uvicorn`
2. 启动服务：`uvicorn fastapi_app:app --host 0.0.0.0 --port 8001`
3. 访问：`http://localhost:8001/public/file-manager.html`

### 配置选项
- `PROJECTS_DIR`: 项目根目录（默认：`projects`）
- `MAX_ZIP_SIZE`: 最大ZIP文件大小（默认：500MB）
- `MAX_FILES`: 最大文件数量（默认：10000）

## 📄 许可证

MIT License - 详见 LICENSE 文件

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

---

**享受高效的文件管理体验！** 🎉