Laravel – アップロード画像の保存・登録

概要

フォームで選択した画像ファイルをサーバーに保存し、画像ファイルへのパスを含むデータをデータベースに登録する手順を整理する。

  1. アップロード画像処理~準備
  2. 画像ファイルの入力
  3. アップロード画像ファイルの保存・登録
  4. アップロード画像の表示
  5. アップロード画像の変更・削除

要点は以下のとおり。

  1. フォームリクエストからアップロード画像を取得
  2. 画像を公開エリアに保存し、パスを取得
  3. 画像へのパスをデータベースに登録

一般的なアップロードファイルの保存方法についてはこちらを参照。

画像ファイル保存・登録後の画像の表示についてはこちらを参照。また、保存済みの画像ファイルの変更・削除についてはこちらを参照。

コントローラー~store

フォームで画像選択後にsubmitボタンを押すと、POSTメソッドでコントローラーのstoreアクションへルーティングされる。storeアクションでの処理は以下のとおり。

  • フォームリクエストから画像ファイルのインスタンスを取得
  • 一時保存領域に保存されたファイル本体を、store()メソッドで公開領域に保存
  • store()メソッドの戻り値として返される、画像ファイルへのパスを取得
  • Itemsデータの他の項目とともに、ファイルへのパスをデータベースへ登録

ここでは、store()の第1引数と第2引数を指定し、publicディスク内のitemsディレクトリー下にファイルを保存している。

データ登録確認

indexページで新規データを登録した結果を、MySQLのコンソールで確認した例。

画像ファイルはファイル名にランダム文字列が与えられ、publicディスク下のitemsディレクトリー内に保存される。imageカラムにitemsディレクトリー以下のパスが登録されている。

publicディスクが充てられているstorage/app/publicディレクトリーを確認すると、itemsディレクトリー内に上記のファイルが保存されているのが確認できる。

no_image.pngは、画像が登録されていない場合に表示するプレースホルダー画像。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です