画像ファイルのファイル名の取得はgetClientOriginalName()
<form action="{{ route('upload') }}" method="post" enctype="multipart/form-data">
@csrf
<p><input type="file" name="character_image" class=""></p> // 画像に関するデータをcharacter_imageという名前で送る
<p>
<label for="name">名前</label>
<input type="text" name="name" id="">
</p>
<p><button type="submit" name="submit">送信</button></p>
</form>
type="file"
でファイルを選択できるようになる。
それにname="character_image"
としてとりあえず名前を与えてあげます。
POSTで送られて来た値は、メソッドの引数の中のRequest $requestで受け取る
public function upload(CharacterRequest $request){ // ( )中の記述で、POSTの値を受け取る
// $name = $request->input('name'); // 下の方が短くてスマートですね
$name = $request->name; // 入力した値はname属性の値に合わせて記述すれば取得できる
$character_image = $request->file('character_image')->getClientOriginalName(); // 画像ファイル名を取得
dd($character_image); // ***.pngなどの画像ファイル名が表示される。ちゃんと変数に入ってる!
}
file('***')
***の部分に、type="file"と記述した部分の情報が送られてくる。
今回は、
<p><input type="file" name="character_image" class=""></p>
と記述していたので、ここで選択した画像ファイルの情報が入ってくる。
それに対してgetClientOriginalName()というメソッド(?)を実行することで画像選択するときにその画像につけている名前を取得することができる。
スクールではClassを習っていない
スクールで習ったものだけだとClassを使うことはありませんでした。
なのでオブジェクト
という考え方が最初は全然わかりませんでした。というか今もほとんどわかっていませんが。
今のところの理解だと
$hoge->title
で$titleという変数の値が取得できる
$hoge->function()
でメソッド(関数)が実行できる
というくらい。
Laravelではもともと用意されているメソッドがいろいろあるけど、公式ドキュメントを見ても初心者にはよくわからない。。。
そのまま流用する分にはできるけど、応用が全く効かなくない!!
これもひたすら自分で
書く→出力→修正→出力
を繰り返すことで理解も深まっていくのでしょう。。。長い道のりだけど、思い通りになったときの感動といったら!