spazzmarticus/tus-server

Tus.io协议服务器实现,遵循PSR标准

2.0.0-rc4 2024-03-13 06:31 UTC

README

这是一个使用PSR HTTP标准实现的"tus.io 可恢复文件上传"协议的服务器实现

安装

使用 Composer 进行安装

composer require spazzmarticus/tus-server

不要忘记安装你想要使用的PSR-7PSR-17实现。

PSR

实现

使用

演示

您可以通过安装开发依赖项(composer install)并运行提供的 server.php 来演示 TusServer

php -S localhost:8000 example/server.php

打开您的浏览器,访问 localhost:8000/ 并使用 (Uppy) 进行上传。

上传存储在 example/uploads/... ,文件系统缓存在 example/cache/

访问 localhost:8000/reset永久删除上传、中间块和元数据存储。可能存在错误日志在 example/log/php-error.php 和包含一些额外信息的服务器日志在 example/log/tus-server.log 中。

测试

自动测试使用

  • PHPUnit - 单元测试和集成测试
  • newman - 验证 TusServer 是否符合 tus. io-协议。

示例

  • Slim v4 - Slim 路由允许直接调用此 tus-server 实现。

👋 这是我的 tus-server 使用方法。

缓存作为存储?!?

TusServer 需要一些快速存储上传元数据的东西。由于有效负载很小且性能很重要,可以使用缓存。

除了使用易失性缓存之外,您应该使用包含快速易失性和较慢的非易失性缓存的链。 (上传过程中丢失元数据不允许恢复上传。 )

👋 我使用 symfony/cache

 $volatileCache = new Symfony\Component\Cache\Adapter\ApcuAdapter('...');
 $nonVolatileCache = new Symfony\Component\Cache\Adapter\FilesystemAdapter('', 0, __DIR__ . '/...');

 $cacheChain = new Symfony\Component\Cache\Adapter\ChainAdapter([$volatileCache, $nonVolatileCache]);

 $storage = new Symfony\Component\Cache\Psr16Cache($cacheChain);

替代方案

  • ankitpokhrel/tus-php - 没有提供足够的灵活性来满足我的需求,这也是我决定开始自己的实现的原因。(如果你正在寻找php tus-client,它提供了。)