LaravelのStorageを使ってS3に書き込み・読み込みするサンプル

スポンサーリンク

Laravelのファイルストレージシステムは、Storageファサードを通してローカルもS3も同じようにストレージとして扱える便利機能です。

今回はその練習を兼ねて、フォームからPOSTされた文字列をAWS S3のファイルに書き込みと、それを読み込んで表示するごく簡単なサンプルを作ってみました。

必要な準備

  • AWSで何らかのバケットを用意
  • AWSで自分のIAMユーザーのアクセスキーを作成
  • 使用するIAMユーザーが用意したバケットに読み書きできる

実装

まず事前に必要パッケージをインストールします。
(バージョン指定は公式ドキュメントに書かれていたもの)

ちなみにartisan serveを起動している場合パッケージインストール後に起動し直さないとエラーになる気がします。

.envのAWS関連の変数4つを設定します。

ちなみにこれらの環境変数が読まれる先の設定ファイルはconfig/filesystem.phpにあります。

routes/web.phpにルート追加

/s3にフォームとファイルの中身を表示して、POSTするとS3に書き込まれてまた/s3に戻るというだけの、昔の掲示板みたいな構成にします。

app/Http/Controllers/S3Controller.php

resources/views/s3/index.blade.php

書き込むフォームとその下に書き込まれた中身を表示しているだけの単純なページです。
ちなみに@csrfを忘れると419 Page Expiredになります…。

こんな感じでS3への書き込みと読み込みができます。便利ですね。

スポンサーリンク

シェアする

フォローする