S3に画像が置いてあり、view側では画像のファイル名のみわかっており、拡張子が不明だった場合に、view側からS3に画像があるか判定して、画像があれば拡張子を取得して表示する、という仕組みを作りたかった。
globやfile_get_contentsでワイルドカードを使って拡張子を取得しようとしたが上手くいかない。
よって、画像パス一覧を取得してDBに格納する方法に切り替える。
### バケットの画像パス一覧を取得
require_once "./vendor/autoload.php";
$prefix = "test/";
$s3client = new Aws\S3\S3Client([
'credentials' => [
'key' => $key,
'secret' => $secret,
],
'region' => 'ap-northeast-1',
'version' => 'latest',
]);
$objects = $s3client->listObjects([
'Bucket' => $bucket,
'Prefix' => $prefix,
'Delimiter' => "/"
]);
$list = array();
foreach($objects["Contents"] as $object) {
if(substr($object['Key'],-1,1) != "/"){
array_push($list, substr($object['Key'], 5));
}
}
print("<pre>");
var_dump($list);
print("</pre>");
ここからDBにpdoで入れる方法を考えます。