因需要上传大文件,支持断点续传,就找到 https://github.com/ankitpokhrel/tus-php
但集成在 webman 中 tus服务端 headers 中 无法响应返回 协议需要的对下字段
Access-Control-Expose-Headers: Upload-Key, Upload-Checksum, Upload-Length, Upload-Offset, Upload-Metadata, Tus-Version, Tus-Resumable, Tus-Extension, Location
Workerman version:4.1.15 PHP version:8.2.20 Event-Loop:\Workerman\Events\Event
workerman/webman-framework: 1.5.24
简单代码片段
<?php
// 路由 实际只使用了 post 和 patch 方法 /files/tus/**
Route::any('/files/tus/[{path:.+}]', [App\Tms\Controllers\V1\FileController::class, 'tus']);
<?php
use TusPhp\Tus\Server as TusServer;
class FileController extends Controller
{
/**
* tus的服务端
*/
public function tus() {
$tusServer = new TusServer('file');
$tusServer->setUploadDir(public_path('files/tus'));
// return $tusServer->send();
return $tusServer->serve();
}
}
不兼容,用不了
为什么要用别人写好的插件呢,直接封装一个不就可以了。断点续传没必要直接用切片上传。我测试本地切片上传 1G数据,切片成5MB也就是30S时间,线上也就是大概 2分钟左右,看你服务器带宽,切片实现逻辑也简单。