Skip to content

Releases

v2.0.0

Choose a tag to compare

@lvv123 lvv123 released this 04 Nov 14:22

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

Choose a tag to compare

@lvv123 lvv123 released this 04 Nov 12:52

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 的临时文件清理改由 PartFile RAII 守卫负责,函数拆分为校验、写入、提交三段;新增失败路径不再可能遗漏 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

Choose a tag to compare

@lvv123 lvv123 released this 02 Nov 13:19

首个可运行版本。

下载

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,请只部署在可信内网,不要暴露到公网。