AetherUpload / PHP + Rust

大文件上传切成小块再拼起来

切片、续传、秒传、去重与校验共用一套机制,全程不把整个文件读进内存。

以太兽,aetherupload 的项目宠物

切片写入,成品按内容命名

AetherUpload 在浏览器里把文件切片,逐块追加到服务端临时文件,落盘时用文件内容的 md5 命名,上传、续传、秒传、去重与完整性校验因此共用同一套机制。

内核只经 Runtime 门面调用宿主能力,配置、路由、命令、语言文件与前端脚本按宿主分发,同一份代码在九个宿主下运行。

  • 分块上传与断线续传
  • md5 秒传与去重
  • 可选 S3 兼容存储
9宿主适配
0数据库依赖
12语言文档
以太兽 的 微笑 表情

以太兽

一只云团状的以太兽:头顶向上的上传箭头,腹部一条进度条代表分块上传进度,右侧一块带虚线拖尾的分块正在飞来。

把大文件切小块,一块一块送上去。

一块一块,把大文件送上去

从浏览器切片到服务端落盘,每个环节都有对应的机制。

分块上传

浏览器切片,服务端逐块追加,不把整个文件读进内存。

断线续传

弱网下自动重试,已写入的块不重复传,缺哪块补哪块。

秒传与去重

相同 md5 直接命中已有成品,一个分块都不用传。

完整性校验

最后一块复核大小与 MIME,并重算整份 md5 后落盘。

S3 兼容存储

内置零依赖 S3 客户端,可切换本地磁盘与对象存储。

九宿主内核

同一套内核运行在 webman、原生 PHP 与七个框架中。

同一能力,Rust 版本

PHP 版本之外,也可以直接使用 Rust 实现。

Rust v3.0.0 Rust 1.89 / crate

aetherupload-rust

同一套上传语义的 Rust 实现

把分块、续传、秒传、去重与完整性校验带到 Rust,接入八个框架,默认 feature 零第三方依赖。

  • 默认零第三方依赖
  • 八个框架适配
  • 秒传、续传与去重
查看 Rust 仓库

从 webman 插件到通用内核

四次发布,把上传内核与宿主框架彻底解耦。

v1.1.4

卸载兜底修复

修复 webman 卸载包时 Install::uninstall() 漏掉适配器兜底绑定的问题。

v1.1.2

新增原生 PHP 宿主

新增原生 PHP 适配器,端到端真跑 php -S 与 curl,零框架也能用。

v1.1.0

框架无关内核成型

内核与宿主解耦,七个宿主适配器与 12 种语言文档同批落地。

v1.0.4

正确性与安全加固

修复秒传、控制台命令与输入边界问题,新增 42 项回归测试。

版本日志

最近的发布记录,完整列表在 GitHub Releases。

最新 v1.1.4 全部版本
v1.1.42026-09-26

修复 webman 卸载包时缺失的适配器兜底绑定。

v1.1.32026-09-25

修复原生 PHP 端到端 harness 的 redis 传递问题。

v1.1.22026-09-25

新增原生 PHP 适配器,宿主支持增至九个。

v1.1.12026-09-25

修复 CI workflow 中非法的 runner 上下文。

v1.1.02026-09-25

框架无关内核、七个宿主适配器与 12 种语言文档。

v1.0.42026-09-25

秒传、命令与输入边界修复,新增 42 项回归测试。

安装与使用

先安装,再跑一个最小示例。

PHP 8.0+ / 原生 PHP完整 README
安装
composer require erikwang2013/aetherupload-webman
最小示例
require __DIR__ . '/../vendor/autoload.php';

exit(\AetherUpload\Adapter\Native\Bootstrap::handle([
    'base_path' => dirname(__DIR__),
    'config'    => require __DIR__ . '/../config/aetherupload.php',
]));

以太兽的十二种表情

鼠标停一停,它会换一种心情。

搜索本站

输入关键词,例如“上传”“迁移”“JWT”。