在 Laravel Storage 和 AWS S3 中使用通配符列出文件

Jon*_*ams 3 php amazon-s3 amazon-web-services laravel laravel-5.3

我正在转换 Laravel (5.3) 应用程序以使用 AWS S3 作为图像存储。我需要以编程方式获取名称符合特定掩码(例如“FS_1054_*.JPG”)的图像列表,当我使用本地存储时,我可以使用 glob() 函数轻松完成。

关于我如何用 S3 做到这一点的任何建议?

小智 12

假设如果你想获取所有文件,那么你可以使用这个

Storage::disk('s3')->allFiles('');
Run Code Online (Sandbox Code Playgroud)

它将返回您存储桶中的所有文件。但如果你想看起来特别

Storage::disk('s3')->allFiles('FolderName'); 
Run Code Online (Sandbox Code Playgroud)

或者

Storage::disk('s3')->allFiles('FolderName/2FolderName');
Run Code Online (Sandbox Code Playgroud)

看看这张图片。当你想查看所有文件时。

在此处输入图片说明


elG*_*LLa 6

$storage = Storage::disk('s3');
$client = $storage->getAdapter()->getClient();
$command = $client->getCommand('ListObjects');
$command['Bucket'] = $storage->getAdapter()->getBucket();
$command['Prefix'] = 'path/to/FS_1054_';
$result = $client->execute($command);
foreach ($result['Contents'] as $file) {
    //do something with $file['Key']
}
Run Code Online (Sandbox Code Playgroud)