webalternatif / flysystem-openstack-swift
OpenStack Swift 的 Flysystem v2 适配器
v0.3.2
2024-05-06 13:44 UTC
Requires
- php: 8.0.* || 8.1.* || 8.2.* || 8.3.*
- league/flysystem: ^3.0
- php-opencloud/openstack: ^3.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- league/flysystem-adapter-test-utilities: ^3.0
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.19.0
- vimeo/psalm: ^5.24
README
这是一个用于 OpenStack Swift 的 Flysystem v3 适配器,使用 php-opencloud/openstack
。
如果您正在寻找 Flysystem v1 适配器,请参阅 chrisnharvey/flysystem-openstack-swift
。
安装
$ composer require webalternatif/flysystem-openstack-swift
使用方法
use League\Flysystem\Filesystem; use OpenStack\OpenStack; use Webf\Flysystem\OpenStackSwift\OpenStackSwiftAdapter; $openstack = new OpenStack([ 'authUrl' => '{authUrl}', 'region' => '{region}', 'user' => [ 'id' => '{userId}', 'password' => '{password}', ], 'scope' => ['project' => ['id' => '{projectId}']], ]); $adapter = new OpenStackSwiftAdapter($openstack, '{containerName}'); $flysystem = new Filesystem($adapter);
上传大对象
为了使用底层 OpenStack 库的 createLargeObject
方法上传 大对象(对于超过 5 GB 的文件是强制性的),您必须使用 writeStream
方法并定义 segment_size
配置选项。
如果想要将段上传到另一个容器,还可以使用 segment_container
选项。
示例
use Webf\Flysystem\OpenStackSwift\Config; $flysystem->writeStream($path, $content, new Config([ Config::OPTION_SEGMENT_SIZE => 52428800, // 50 MiB Config::OPTION_SEGMENT_CONTAINER => 'test_segments', ]));
测试
这个库使用了由 league/flysystem-adapter-test-utilities
提供的 FilesystemAdapterTestCase
,因此它执行需要真实 OpenStack Swift 容器的集成测试。
要运行测试,将 phpunit.xml.dist
文件复制到 phpunit.xml
,并填写所有环境变量,然后运行
$ composer test
这将运行 Psalm 和 PHPUnit,但您也可以单独运行它们,如下所示
$ composer psalm $ composer phpunit