更新README.md

This commit is contained in:
qing committed 2026-07-24 22:17:20 +08:00
1 parent 3c8531f665
commit 290332c70c
3 files changed
+334 -132

No files matched your search

+61 -81
View File
@@ -1,34 +1,57 @@
# 文件托管服务器
# static — 前端托管服务
一个基于 Flask 的轻量级文件托管与浏览服务器,支持视频/音频流媒体播放和文件下载。
基于 Flask 的轻量级文件托管与前端页面服务,监听 `127.0.0.1:9200`。
## ✨ 功能特性
承载"树状菜单"社区的全部前端页面,同时提供文件浏览与流媒体播放能力。
- **文件浏览** - 现代化 Web 界面,支持文件列表查看和目录导航
- **流媒体支持** - 支持视频和音频文件的在线播放及拖动进度条
- **文件下载** - 一键下载任意文件
- **文件搜索** - 支持实时搜索过滤(快捷键:`/` 或 `Ctrl+F`)
- **响应式设计** - 同时支持桌面端和移动端访问
- **深色模式** - 自动适配系统深色/浅色主题
- **面包屑导航** - 快速定位当前目录位置
- **文件统计** - 实时显示目录中文件和子目录数量
## 架构
## 🚀 快速开始
### 安装依赖
```bash
pip install flask flask-cors
```
gateway :443 (反向代理)
│
▼
static :9200 (Flask + CORS)
│
└── public/ 托管目录
├── index.html 社区首页
├── login.html 登录
├── register.html 注册
├── dnfs.html 树状笔记(调用 dnfs:8006)
├── __view.html 文件浏览器(系统文件,不在列表中显示)
├── allcolor.html 调色板
├── css/ theme.css(统一主题)+ view.css
├── js/ dnfs.js / login.js / register.js / validation.js / view.js
├── games/ HTML 小游戏合集
└── favicon.ico
```
### 配置文件
## 路由
创建 `config.ini` 配置文件(可选,不创建则使用默认配置):
| 路径 | 说明 |
|------|------|
| `GET /` | 社区首页(index.html),不存在时回退 `__view.html` |
| `GET /<path>` | 静态文件服务;目录返回 `__view.html` 由前端拉取列表 |
| `GET /api/filelist?path=` | 文件列表 API,过滤 `__` 前缀系统文件 |
| `GET /video/<path>` | 视频/音频流媒体(HTTP Range 206 分段) |
| `GET /<path>?download=true` | 强制下载 |
| `GET /health` | 健康检查 |
## 功能
- 文件浏览:目录导航、面包屑、实时搜索(`/` 或 `Ctrl+F`)、文件统计
- 流媒体:视频(MP4/WebM/OGG/AVI/MOV/MKV)与音频(MP3/WAV/OGG/FLAC/AAC/M4A)在线播放,支持进度拖动
- 深色模式:`css/theme.css` 统一主题,自动适配系统偏好
- 路径遍历防护:`safe_path_join` 限制访问范围在 `directory.root` 内
- Nuitka 编译:可打包为独立二进制 `fsys.bin`(`sys.frozen` 检测 + BASE_DIR 锚定)
## 配置
`config.ini`:
```ini
[server]
host = 0.0.0.0
port = 5000
host = 127.0.0.1
port = 9200
[directory]
root = ./public
@@ -39,70 +62,27 @@ cert_file = cert.pem
key_file = key.pem
```
### 启动服务器
## 依赖
```
flask>=2.3.0,<3.0.0
flask-cors>=4.0.0,<5.0.0
nuitka # 可选,编译为独立二进制
```
## 运行
```bash
python file_server.py
bash _set.sh # 创建 venv + 安装依赖
bash _run.sh # 启动服务(当前使用 python3,Nuitka 二进制已注释)
```
或指定配置文件:
## 备注
```bash
python file_server.py --config my_config.ini
```
- 以 `__` 开头的文件/目录(`__view.html`、`__icons/`)为系统内部使用,文件列表 API 中不显示。
- ICP 备案:蜀ICP备2024107064号-2,链接至 beian.miit.gov.cn,已置于 index/login/register/dnfs 四页 footer。
- 入口文件名为 `fsys.py`(旧 README 中的 `file_server.py` 已废弃)。
服务器启动后,访问 `http://localhost:5000` 即可浏览文件。
## 许可证
## 📁 目录结构
将需要托管的文件放入配置的目录(默认为 `./public`),服务器会自动创建该目录。
```
project/
├── file_server.py # 主程序
├── config.ini # 配置文件(可选)
└── public/ # 托管文件目录(自动创建)
├── videos/
├── music/
└── documents/
```
## 🎬 支持的媒体格式
| 类型 | 支持的格式 |
|------|-----------|
| 视频 | MP4, WebM, OGG, AVI, MOV, MKV |
| 音频 | MP3, WAV, OGG, FLAC, AAC, M4A |
## 📡 API 接口
### 获取文件列表
```
GET /api/filelist?path=subdir
```
### 流媒体播放
```
GET /video/{filepath}
```
### 健康检查
```
GET /health
```
## 🔒 安全特性
- 路径遍历防护,防止访问托管目录外的文件
- 完善的错误处理和日志记录
- 支持 HTTPS/SSL 加密传输
## 📋 依赖
- Python 3.6+
- Flask
- Flask-CORS
## 📄 许可证
MIT License
MIT License