Laravel で amazon S3 のファイル操作を行うメソッド一覧

● Laravel Amazon S3 の設定

パッケージのインストール

composer require aws/aws-sdk-php
composer require league/flysystem-aws-s3-v3

.env

AWS_ACCESS_KEY_ID=XXX....................
AWS_SECRET_ACCESS_KEY=XCM.................................................
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=<バケット名>

AWS_DEFAULT_REGION は 使用中のS3が所属しているリージョンを一覧(https://amzn.to/3bAd1Jh)から選んで指定します。

● LaravelでS3へファイルのアップロード

$path = \Storage::disk('s3')->put('/testdir/', $file, 'public');
<ディレクトリ名> , <ファイルデータ>,<public または private>
// サーバーのファイルをアップロードする場合
$path = \Storage::disk('s3')->put($upload_path, file_get_contents($tmp_url), 'public');
 
// ブラウザからPOSTされたファイルをアップロードする場合
$path = \Storage::disk('s3')->put($upload_path, $request->file('upfile'), 'public');

戻り値 $path には ディレクトリ名とファイル名のパスが返ります。

● LaravelでS3へアップロードしたファイルのURLを取得する

$url = \Storage::disk('s3')->url("testdir/i9WBM4ag2gJ83rmKYDR8DBW12XxsWiaXah8V5voh.png");

● LaravelでS3バケット内のファイル一覧を取得する

files : ファイル一覧を取得 allFiles : 下の階層のファイル一覧も取得

$list = \Storage::disk('s3')->files('');
$list = \Storage::disk('s3')->allFiles('');
$dir_list = \Storage::disk('s3')->directories('/');

● LaravelでS3ファイルを削除する

// ファイル削除
$disk->delete(【バケットのrootディレクトリからの相対パス】);

● LaravelでS3のディレクトリごと(ディレクトリ内のファイルも一緒に)削除する

\Storage::disk('s3')->deleteDirectory('testdir');

● LaravelでS3ファイルをコピーする

\Storage::disk('s3')->copy($old_path, $new_path);

● LaravelでS3ファイルを移動(またはリネーム)する

\Storage::disk('s3')->move($old_path, $new_path);

● LaravelでS3ファイルの公開非公開を変更する

\Storage::disk('s3')->setVisibility($file_path, 'public');  // 公開にする
\Storage::disk('s3')->setVisibility($file_path, 'private'); // 非公開にする

● Laravelで amazon S3 ファイルを 別のバケットにコピーする

$disk = Storage::disk('s3');
if (!$disk->move('bucketOne/testFile.jpg', 'bucketTwo/testFile.jpg')) {
   throw new \Exception('File could not be moved.');
}
No.1759
05/19 09:07

edit