Initial commit: File manager with upload, search, and modal dialogs
This commit is contained in:
186
README.md
Normal file
186
README.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# 📁 文件管理器
|
||||
|
||||
一个类似 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
|
||||
Reference in New Issue
Block a user