webalternatif/flysystem-openstack-swift

OpenStack Swift 的 Flysystem v2 适配器

v0.3.2 2024-05-06 13:44 UTC

This package is auto-updated.

Last update: 2024-09-06 14:43:45 UTC


README

Source code Software license GitHub issues Test status Psalm coverage Psalm level

这是一个用于 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

这将运行 PsalmPHPUnit,但您也可以单独运行它们,如下所示

$ composer psalm
$ composer phpunit