0

我弄乱了 flysystem 库(无论如何,这太棒了!)我在远程 s3 存储桶上创建了一些文件,定义了一些自定义元数据

$conf = [
'visibility' => 'public',
'Metadata'     => [
    'Content-type' => 'image/jpeg',
    'Generated' => 'true'
]];
$response = $filesystem->write('/test/image.jpg', $image_stream, $conf);

'Generated' => 'true'是一个自定义元数据,我可以在 AWS Bucket 的控制台中找到它。

之后我无法读取文件系统资源上“生成”的自定义元数据

$allFiles = $filesystem->listContents('/path/', true)->toArray();

##更新 1

我知道我应该使用文档中解释的“getWithMetadata”插件:https ://flysystem.thephpleague.com/v1/docs/advanced/provided-plugins/#get-file-info-with-explicit-metadata

看起来很简单,但我的 src 中似乎没有任何 League\Flysystem\Filesystem::addPlugin() 方法。

有谁能够帮助我?

4

1 回答 1

0

要使用 S3 FlySystem 适配器,您需要初始化 S3 客户端

$client = new Aws\S3\S3Client($options);

在 S3 SDK 中,您可以使用

$allFiles = $filesystem->listContents($path)->sortByPath()->toArray();

$file = $allFiles[0];
$headers = $client->headObject(array(
"Bucket" => $bucket,
"Key" => $file->path()
));

print_r($headers->toArray());

获取所有文件元数据的列表!

于 2021-11-23T12:08:49.690 回答