File System 是一个简洁高效的文件管理系统,支持文件上传、下载、重命名、移动、删除等操作,适合个人和团队在本地或云端搭建私有文件服务,生成直链预览图片,视频,音频等,支持api获取文件直链链接
- 多目录分类管理(视频、音频、图片、文档、其他)
- 文件/文件夹上传、下载、重命名、移动、删除
- 支持批量操作
- 支持目录递归浏览
- api操作数据
- 支持基础认证(用户名/密码)
- 支持 Docker 一键部署与持久化
| 变量名 | 说明 | 默认值 |
|---|---|---|
| PORT | 服务监听端口 | 9999 |
| USERNAME | 登录用户名 | admin |
| PASSWORD | 登录密码 | admin |
- 克隆项目
git clone https://github.com/eooce/file-system.git cd file-system - 安装依赖
npm install
- 启动服务
npm start
- 默认访问地址: http://localhost:9999
- 默认用户名/密码:
admin/admin
- 默认用户名/密码:
ghcr.io/eooce/file-system:latest
docker run -d \
--name file-system \
-p 9999:9999 \
-v /app/files:/app/files \
ghcr.io/eooce/file-system:latest- 说明:将主机目录
/app/files挂载到容器内/app/files,实现数据持久化。
新建 docker-compose.yml:
version: '3'
services:
file-system:
image: ghcr.io/eooce/file-system:latest
container_name: file-system
ports:
- "9999:9999"
volumes:
- ./files:/app/files
environment:
- USERNAME=admin
- PASSWORD=admin
restart: unless-stopped- 说明:当前目录下的
./files会作为持久化目录挂载到容器内/app/files。
启动服务:
docker-compose up -d- 浏览器访问:http://localhost:9999
- 默认用户名/密码:
admin/admin
GET /api/files- 获取根目录下所有文件和文件夹。
GET /api/files?subdir=xxx- 获取指定目录(如 videos、pictures 等)下的所有文件和文件夹。
[
{
"name": "test.jpg",
"subdir": "pictures",
"isDirectory": false,
"size": "1.23 MB",
"lastModified": "2024-06-29T12:34:56.789Z",
"downloadUrl": "http://host/download/pictures/test.jpg"
},
...
]POST /api/upload?subdir=xxx- 表单字段:
file(支持多文件),可选relativePath(用于文件夹上传) - 响应:上传成功信息及下载链接
- 表单字段:
GET /download/相对路径- 例:
/download/pictures/test.jpg
- 例:
PUT /api/files/rename- JSON 参数:
{"oldPath": "pictures/test.jpg", "newName": "new.jpg"} - 响应:重命名结果
- JSON 参数:
PUT /api/files/move- JSON 参数:
{"oldPath": "pictures/test.jpg", "targetDir": "videos"} - 响应:移动结果
- JSON 参数:
DELETE /api/files/相对路径- 例:
/api/files/pictures/test.jpg - 响应:删除结果
- 例:
GET /api/subdirs- 响应:
["videos", "audios", "pictures", "documents", "others"]
- 响应:
本项目基于 MIT License 开源,欢迎自由使用和二次开发。
如需更多接口或自定义开发,欢迎参考源码或提交 issue。