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で入れる方法を考えます。