TOP ▲
itcore TOP
> TIPS
> aws_s3_php.php
タグ:php aws s3 画像 sdk base64 PHP S3 ファイル一覧 削除 画像バイナリ表示| itcore 2021年
<?php
require_once base_path() . "/vendor/autoload.php";
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
// S3
$aws_region = ENV("AWS_DEFAULT_REGION");
$aws_key = ENV("AWS_ACCESS_KEY_ID");
$aws_secret = ENV("AWS_SECRET_ACCESS_KEY");
$s3_bucket = ENV("AWS_BUCKET");
$s3_client = new S3Client([
'region' => $aws_region,
'version' => 'latest',
'credentials' => [
'key' => $aws_key,
'secret' => $aws_secret,
],
]);
//----------------------------
// ファイル一覧 prefixで検索
//----------------------------
$prefix = "xxx/";
$objects = $s3_client->listObjectsV2([
'Bucket' => $s3_bucket,
'Prefix' => $prefix,
]);
//---------------------------------
// 画像表示 バイナリデータ base64
//---------------------------------
$a_obj = uGetAr($objects, 'Contents', []);
foreach ($a_obj as $object) {
$file = $object["Key"];
$pos = strlen($prefix);
$fname = substr($file, $pos);
$pos = strpos($fname, ".");
$ext = substr($fname, $pos + 1);
$name = substr($fname, 0, $pos);
$data = $s3_client->getObject(['Bucket'=>$s3_bucket, 'Key'=> $file]);
$body = $data['Body'];
$base64 = base64_encode($body);
$mime = "image/$ext";
$img = "<img src='data:$mime;base64,$base64' /> ";
echo "$name $img<br>\n"; // 画像表示
}
//---------------------------------
// ファイル一括削除 PREFIX指定
//---------------------------------
//$prefix = "xxx/";
function uS3Delete($s3_client, $prefix)
{
$bucket = ENV("AWS_BUCKET");
// ファイル一覧取得
$objects = $s3_client->listObjectsV2([
"Bucket" => $bucket,
"Prefix" => $prefix,
]);
$a_obj = uGetAr($objects, "Contents", []);
if (empty($a_obj)) {
return; // 削除ァイルなし
}
// 一括削除
$result = $s3_client->deleteObjects([
"Bucket" => $bucket,
"Delete" => [
"Objects" => $a_obj,
// 'Quiet' => ,
],
]);
return $result;
}
// 配列の要素が存在しないときは空文字などを返す。
function uGetAr($ar, $idx, $default = "")
{
if (!isset($ar[$idx])) {
return $default;
}
return $ar[$idx];
}
?>