この記事で解決できる悩み
いずみ
こんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴9年)で、資格は13個保有しています。
結論、PHP(Laravel)でS3から画像を取得する方法は超簡単です。
本記事を読めば、AWS SDKを使用してPHP(Laravel)でS3から画像を取得する方法について理解できるので早速見ていきましょう!
すぐ読み終わるので、ぜひ最後まで読んでくださいね♪
目次
【前提】環境
- ライブラリ「aws-sdk」がインストールされていること
PHP(Laravel)でS3から画像を取得する方法
では早速、PHP(Laravel)でS3から画像を取得する方法を解説します。
今回は、取得した画像をBase64でエンコードします。
<?php
namespace App\Services\Aws;
use Aws\S3\S3Client;
/**
* S3サービス
*/
class S3Service
{
private $s3;
public function __construct()
{
$this->s3= new S3Client([
'version' => '*** version ***',
'region' => '*** region ***',
'credentials' => [
'key' => '*** key ***',
'secret' => '*** secret ***',
],
]);
}
/**
* オブジェクトを取得する
*
* @link https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject
*
* @param string key キー(例:ファイル名)
*/
public function getObject($key)
{
return base64_encode(
$this->s3->getObject([
'Bucket' => '*** Bucket ***',
'Key' => $key,
])['Body']
);
}
}
↑がPHP(Laravel)で画像を取得するソースコードです。
ファイルの実体はgetObjectで返却されるjsonのBodyにあるので注意してください。
getObjectについて
以下がgetObjectの概要になります。
Bucket | S3のバケット名 ※Bucket名が「sample」の場合、「sample」と指定します。 |
Key | ファイル取得先フォルダ&ファイル名 ※ファイル取得先が「sample/img/」でファイル名が「sample.png」の場合、「img/sample.png」と指定します。 |
まとめ
今回は、AWS SDKを使用してPHP(Laravel)でS3から画像を取得する方法について解説しました。
以下が本記事のまとめになります。
- おすすめ本
Laravelの勉強なら「PHPフレームワーク Laravel入門 第2版
最後までお読みいただき、ありがとうございました!
- クソおすすめ本
海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。