『Laravel5.5をGoogle App Engineで動かす』にてGoogle App Engine(スタンダード環境)にLaravel5.5アプリケーションをデプロイする方法を紹介しました。
今回は、前回要確認事項としていたLaravelのファイルストレージ機能を(もちろんGoogle CloudStorageで!)利用する方法を確立したので紹介したいと思います。"laravel5.5"のタグを付けていますが、多分 5.6, 5.7 でも動くはず。
GaeSupportLaravelの導入・設定
まず前提として、GaeSupportLaravel を利用します。
ただし、利用するバージョンは"dev-php72-laravel55"です。詳細、基本的な設定等は『Laravel5.5をGoogle App Engineで動かす』をご覧ください。
環境変数
.envファイルにFILESYSTEM_DRIVER=gae
を追加します。
設定ファイル
設定ファイル(config/filesystems.php)に以下の設定を追加します。
'disks' => [
// 中略
'gae' => [
'driver' => 'gae',
'root' => 'gs://(YOUR_BUCKET_NAME)/storage/app/',
],
ソースコードのコメントを読む限り、rootの最後に"/"が必要っぽい。
もちろん、rootの値も環境変数で与えるのがより望ましいです。
'root' => env('GCS_STORAGE_URI'),
実装
ビュー
<input type="file" name="image"/>
もちろん、<form>
へのenctype="multipart/form-data"
追加も必要です。
コントローラ
public function store(Request $request)
{
// 省略
$path = $request->file('image')->store('public');
\Log::info("Image uploaded:{$path}"); // ここも必須ではない
// 省略
}
ビュー、コントローラのサンプルは必要最小限の部分のみ。
storeだけでなく、updateにも同様のコードを追加することになるかと思います。
おまけ(画像プレビュー)
画像ファイルのアップロードであれば、最低でもアップロード前のプレビューくらいは欲しいものです。
『最速・最高のファイルアップロードに近づくための1歩#画像のプレビュー』が参考になったので紹介しておきます。