187 lines
3.6 KiB
Markdown
187 lines
3.6 KiB
Markdown
# 📁 文件管理器
|
||
|
||
一个类似 nginx autoindex 的文件管理器,支持实时显示文件变动、在线上传/删除/移动/重命名等操作。
|
||
|
||
## 功能特性
|
||
|
||
### 📂 文件浏览
|
||
- 目录导航和面包屑路径
|
||
- 文件列表显示(名称、大小、修改时间)
|
||
- Emoji 图标显示文件类型
|
||
- 支持进入子目录和返回上级
|
||
|
||
### 📤 上传功能
|
||
- 单文件上传
|
||
- 批量文件上传
|
||
- 拖拽上传支持
|
||
|
||
### 📥 下载功能
|
||
- 单文件下载
|
||
- 批量文件打包下载(ZIP)
|
||
- 整个文件夹下载(ZIP)
|
||
|
||
### ✏️ 文件操作
|
||
- 文件删除(支持批量)
|
||
- 文件重命名
|
||
- 文件移动(支持跨目录)
|
||
|
||
### 👁️ 预览功能
|
||
- 图片预览
|
||
- 文本文件预览
|
||
- PDF 文件预览
|
||
|
||
### 🔄 实时监控
|
||
- 文件系统实时监控
|
||
- 自动刷新文件列表
|
||
- SSE 实时推送通知
|
||
|
||
### 🎨 界面特性
|
||
- 响应式设计
|
||
- 深色状态指示
|
||
- 流畅动画效果
|
||
|
||
## 技术栈
|
||
|
||
- **后端**: Go + Gin
|
||
- **前端**: 原生 HTML/CSS/JavaScript
|
||
- **实时通信**: Server-Sent Events (SSE)
|
||
- **文件监控**: fsnotify
|
||
- **部署**: Docker
|
||
|
||
## 快速开始
|
||
|
||
### 使用 Docker Compose(推荐)
|
||
|
||
```bash
|
||
# 构建并启动
|
||
docker-compose up -d
|
||
|
||
# 查看日志
|
||
docker-compose logs -f file-manager
|
||
|
||
# 停止服务
|
||
docker-compose down
|
||
```
|
||
|
||
### 使用 Docker
|
||
|
||
```bash
|
||
# 构建镜像
|
||
docker build -t file-manager .
|
||
|
||
# 运行容器
|
||
docker run -d \
|
||
--name file-manager \
|
||
-p 8080:8080 \
|
||
-v /path/to/your/files:/data \
|
||
file-manager
|
||
```
|
||
|
||
### 本地运行
|
||
|
||
```bash
|
||
# 安装依赖
|
||
go mod download
|
||
|
||
# 启动服务
|
||
go run main.go -port 8080 -root ./files
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 访问界面
|
||
|
||
打开浏览器访问: http://localhost:8080
|
||
|
||
### 上传文件
|
||
|
||
1. 点击 **📤 上传** 按钮选择文件
|
||
2. 或直接将文件拖拽到页面任意位置
|
||
|
||
### 下载文件/文件夹
|
||
|
||
1. 勾选要下载的文件/文件夹
|
||
2. 点击 **📥 下载** 按钮
|
||
3. 多个文件会打包成 ZIP 下载
|
||
|
||
### 删除文件
|
||
|
||
1. 勾选要删除的文件
|
||
2. 点击 **🗑️ 删除** 按钮
|
||
3. 确认删除操作
|
||
|
||
### 移动文件
|
||
|
||
1. 勾选一个文件
|
||
2. 点击 **✂️ 移动** 按钮
|
||
3. 选择目标目录
|
||
4. 点击 **移动** 确认
|
||
|
||
### 重命名
|
||
|
||
1. 点击文件操作列的 **✏️** 图标
|
||
2. 输入新名称
|
||
3. 点击 **确认**
|
||
|
||
### 新建文件夹
|
||
|
||
1. 点击 **📁 新建文件夹** 按钮
|
||
2. 输入文件夹名称
|
||
3. 点击 **创建**
|
||
|
||
## 配置说明
|
||
|
||
### 环境变量
|
||
|
||
| 变量 | 说明 | 默认值 |
|
||
|------|------|--------|
|
||
| PORT | HTTP 监听端口 | 8080 |
|
||
| ROOT | 文件根目录 | /data |
|
||
|
||
### 命令行参数
|
||
|
||
```bash
|
||
file-manager -port 8080 -root /path/to/files
|
||
```
|
||
|
||
## API 接口
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/api/files?path=xxx` | 获取文件列表 |
|
||
| GET | `/api/preview?path=xxx` | 预览文件 |
|
||
| GET | `/api/download?path=xxx` | 下载文件 |
|
||
| GET | `/api/download?paths=[xxx,yyy]` | 批量下载 |
|
||
| POST | `/api/upload?path=xxx` | 上传文件 |
|
||
| POST | `/api/dir` | 创建目录 |
|
||
| DELETE | `/api/files` | 删除文件 |
|
||
| PUT | `/api/move` | 移动文件 |
|
||
| PUT | `/api/rename` | 重命名文件 |
|
||
| GET | `/api/watch` | SSE 实时监控 |
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
file-manager/
|
||
├── main.go # 主程序
|
||
├── static/
|
||
│ ├── index.html # 主页面
|
||
│ ├── style.css # 样式
|
||
│ └── app.js # 前端逻辑
|
||
├── Dockerfile # Docker 构建
|
||
├── docker-compose.yml
|
||
└── README.md
|
||
```
|
||
|
||
## 安全提示
|
||
|
||
⚠️ 此文件管理器没有访问控制,请仅在可信环境中使用:
|
||
|
||
- 不要暴露到公网
|
||
- 使用防火墙限制访问
|
||
- 或在前端添加认证层
|
||
|
||
## 许可证
|
||
|
||
MIT License
|