Repository navigation
Releases
Releases · lvv123/file-server
v2.0.0
file-server v2.0.0
这是一个破坏性版本:文件服务器的模型从“配置一个 data 目录 + 固定的 files 子目录”改为“直接服务一个目录”,用法接近 python -m http.server 8007。
本版本已重新发布,包含手机端新建文件夹、重命名、删除弹窗无法输入问题的修复。
主要变化
- 直接服务一个目录:默认服务当前工作目录,
file-server.exe 8007即可启动;-d D:\share可指定目录。 - 元数据集中到
.file-server/:config.json、meta.db、上传临时文件tmp/和单实例锁server.lock都放在<服务目录>/.file-server/,不再创建data/files。 .file-server对 Web 端完全隐藏:列表、搜索、下载、上传、重命名、删除均不可访问;直接请求返回403 RESERVED_PATH,符号链接/junction 别名也会被拦截。- 完整命令行参数:端口、监听地址、目录、配置文件、分片大小、上传会话 TTL、审计保留策略、管理 IP、线程、超时、JSON 体积上限、搜索限制都可用命令行覆盖。
- 配置首次运行自动生成:默认写入
<服务目录>/.file-server/config.json,不需要手动准备配置文件。 - 单实例保护:同一服务目录只允许一个
file-server运行,避免上传会话和 SQLite 竞争。 - 启动自动索引:扫描服务目录并跳过
.file-server、符号链接和 junction;运行期间可调用GET /api/resync手动同步。
本次修复
- 新建文件夹、重命名不再使用浏览器原生
prompt(),删除不再使用原生confirm(),全部改为页面内自定义弹窗。 - 弹窗打开时同步聚焦输入框,解决部分手机浏览器/WebView 中“框弹出来了但无法输入、软键盘不弹出”的问题。
- 输入框使用 16px 字号,避免 iOS 聚焦时自动放大页面;支持回车确认、Esc/取消/点遮罩关闭,空名称时禁用确定按钮。
升级说明
data_root配置键已移除,配置文件里出现它会直接报错。- v1 的
data/files内容需要移动到新的服务目录,或使用-d <旧数据目录>/files直接服务旧文件。 - 旧
meta.db不复用;启动时会按新的服务目录重新索引。 - 旧的
config.json不会被默认读取;需要时用-c显式指定,或让程序在新的.file-server/下重新生成。
验证结果
- 单元测试:118 个用例 / 680 条断言,全部通过(Debug 与 Release)。
- 接口 / 集成测试:69 项通过,0 项失败,1 项跳过(磁盘写满用例需要接近写满的卷)。
- 大文件验收:256 MiB 与 4096 MiB 均为 10/10 通过,覆盖上传、强杀、重启、续传、合并与内容校验。
- 手机端验收:Playwright + Edge,390×844 移动视口,新建文件夹 → 重命名 → 删除完整流程通过,输入框聚焦校验通过(Debug 与 Release 均验证)。
- 发布包冒烟:首页包含新弹窗标记,
/.file-server路径返回 403。 - 手工验证:默认目录启动、位置参数端口、自动生成
.file-server、保留路径 403、--check-config无副作用、第二实例被拒绝。
安装包
file-server-2.0.0-win64.zip(Windows x64,静态链接 CRT,无需 VC++ 运行库)- 大小:1,011,476 字节
- SHA-256:
B50127360804DC17DEC63A0C0788D9BC549749A6A58A7606B8E872CB23E6A982 - 压缩包内仅包含
file-server.exe、README.md、LICENSE;配置由程序首次运行自动生成。
安全提醒
本项目没有内置认证,也不提供 HTTPS。默认监听 0.0.0.0:8080,仅适合可信内网;服务目录里的所有文件(包括源码、.env、.git)都可能被下载、修改或删除,请只把需要共享的目录作为服务目录。
v1.1.0
v1.1.0
移动端适配、审计修复与上传核心重构。
下载
file-server-1.1.0-win64.zip 解压后包含:
| 文件 | 说明 |
|---|---|
file-server.exe |
Windows x64,MSVC 2022 Release 构建,静态链接 CRT,无需安装 VC++ 运行库 |
config.json |
默认配置:8080 端口、数据目录 ./data、分片 16 MB |
README.md |
完整文档 |
LICENSE |
MIT |
file-server.exe -c config.json然后用浏览器打开 http://127.0.0.1:8080/。首次运行会在 ./data 下自动创建 files/、tmp/、meta.db。
自 v1.0.0 以来的变更
- 移动端适配:文件列表、上传进度、对话框和操作菜单在手机/平板上可用,390px 宽度下布局正常。
- 代码审计修复:覆盖路径校验、下载锁、会话清理、审计写入等审计发现项。
- 上传核心重构:
upload_chunk的临时文件清理改由PartFileRAII 守卫负责,函数拆分为校验、写入、提交三段;新增失败路径不再可能遗漏fclose或残留.tmp。 - 可测试性:抽出与框架无关的
BodySource接口,BodyGate在传输层实现它;upload_chunk新增 14 个单元测试(长度不符、短包、长包、重复分片、位图更新、零字节会话、未完成合并等)。 - 版本号更新为
1.1.0(--version与管理接口同步)。
功能
- 分片上传 + 断点续传,每片一个独立请求、请求体为原始字节;浏览器端保持 4 个分片并发
- 流式下载 + HTTP Range,正确返回
206/Content-Range,多区间与越界返回416 - 文件与目录管理:列表、新建多级目录、重命名、删除、覆盖上传(临时文件合并后原子替换)
- SQLite 索引的全库文件名搜索
- 全量审计日志(成功与失败都记录),按天数与容量两条策略滚动清理
- 仅本机可访问的管理后台:状态页、审计查询、删除
验证情况
- 单元测试:94 用例 / 589 断言通过
- 接口测试:66 项通过,0 失败,1 项跳过(磁盘写满用例需要一块接近写满的卷)
- 4 GiB 大文件「上传 → 强杀进程 → 重启 → 续传 → 合并 → 校验」验收通过
- 构建:MSVC 2022,
/W4,0 error / 0 warning
v1.0.0
首个可运行版本。
下载
file-server-1.0.0-win64.zip 解压后包含:
| 文件 | 说明 |
|---|---|
file-server.exe |
Windows x64,MSVC 2022 Release 构建,静态链接 CRT,无需安装 VC++ 运行库 |
config.json |
默认配置:8080 端口、数据目录 ./data、分片 16 MB |
README.md |
完整文档 |
LICENSE |
MIT |
file-server.exe -c config.json然后用浏览器打开 http://127.0.0.1:8080/。首次运行会在 ./data 下自动创建 files/、tmp/、meta.db。
功能
- 分片上传 + 断点续传,每片一个独立请求、请求体为原始字节;浏览器端保持 4 个分片并发
- 流式下载 + HTTP Range,正确返回
206/Content-Range,多区间与越界返回416 - 文件与目录管理:列表、新建多级目录、重命名、删除、覆盖上传(临时文件合并后原子替换)
- SQLite 索引的全库文件名搜索
- 全量审计日志(成功与失败都记录),按天数与容量两条策略滚动清理
- 仅本机可访问的管理后台:状态页、审计查询、删除
验证情况
- 单元测试:80 用例 / 532 断言通过
- 接口测试:64 项通过、1 项跳过(磁盘写满用例需要一块接近写满的卷)
- 10 GiB 大文件「上传 → 强杀进程 → 重启 → 续传 → 合并」验收通过
注意
本项目没有认证、没有 HTTPS,请只部署在可信内网,不要暴露到公网。