Files
auto-index-go/README.md

3.6 KiB
Raw Permalink Blame History

📁 文件管理器

一个类似 nginx autoindex 的文件管理器,支持实时显示文件变动、在线上传/删除/移动/重命名等操作。

功能特性

📂 文件浏览

  • 目录导航和面包屑路径
  • 文件列表显示(名称、大小、修改时间)
  • Emoji 图标显示文件类型
  • 支持进入子目录和返回上级

📤 上传功能

  • 单文件上传
  • 批量文件上传
  • 拖拽上传支持

📥 下载功能

  • 单文件下载
  • 批量文件打包下载ZIP
  • 整个文件夹下载ZIP

✏️ 文件操作

  • 文件删除(支持批量)
  • 文件重命名
  • 文件移动(支持跨目录)

👁️ 预览功能

  • 图片预览
  • 文本文件预览
  • PDF 文件预览

🔄 实时监控

  • 文件系统实时监控
  • 自动刷新文件列表
  • SSE 实时推送通知

🎨 界面特性

  • 响应式设计
  • 深色状态指示
  • 流畅动画效果

技术栈

  • 后端: Go + Gin
  • 前端: 原生 HTML/CSS/JavaScript
  • 实时通信: Server-Sent Events (SSE)
  • 文件监控: fsnotify
  • 部署: Docker

快速开始

使用 Docker Compose推荐

# 构建并启动
docker-compose up -d

# 查看日志
docker-compose logs -f file-manager

# 停止服务
docker-compose down

使用 Docker

# 构建镜像
docker build -t file-manager .

# 运行容器
docker run -d \
  --name file-manager \
  -p 8080:8080 \
  -v /path/to/your/files:/data \
  file-manager

本地运行

# 安装依赖
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

命令行参数

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