TOP ▲ itcore TOPTIPSaws_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];
}

?>