webman 是否可以支持tus-php实现的 tus 服务端?

Van Chin

问题描述

因需要上传大文件,支持断点续传,就找到 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();
    }
}

为此你搜索到了哪些方案及不适用的原因

  1. 个人猜测和 webman/workman 的 Response 不兼容,tus-php 使用的是 Symfony\Component\HttpFoundation\Response 但感觉又是用的 webman 的 Response 返回的
  2. 还有一个可能的原因就是跨域,但我已经做了跨域的相关处理(跨域应该可以排除)

截图

截图
截图
截图

参考资料

https://tus.io/protocols/resumable-upload

https://github.com/ankitpokhrel/tus-php

197 2 0
2个回答

walkor 打赏

不兼容,用不了

  • 暂无评论
故人重来

为什么要用别人写好的插件呢,直接封装一个不就可以了。断点续传没必要直接用切片上传。我测试本地切片上传 1G数据,切片成5MB也就是30S时间,线上也就是大概 2分钟左右,看你服务器带宽,切片实现逻辑也简单。

  • 暂无评论
×
🔝