シンボリックリンクを貼る
画像はstrageフォルダに入るが、ここはWEBからは通常では参照は不可能。
なので、publicからstarageの中へシンボリックリンクを貼るため以下を実行する。
php artisan storage:link
1.画像ファイルの指定
<form method='POST' action="..." enctype="multipart/form-data"><!-①-->
<input name='image' type="file" class="form-control-file" id="image" ><!-②-->
①enctype="multipart/form-data"必須
②type="file"
2.画像アップロード
2パターンある
1.通常のアップロード
2.Strageファサードを使ったアップロード
1.通常のアップロード
if($request->hasFile('image')){//①
if($request->file('image')->isValid()){//②
$image_path = $request->file('image')->store('public/images/');//③
$image_path=basename($image_path);//④
}
}
①hasFile('image')はファイルがちゃんと送信されたかチェックする。
②isValid()はファイルがアップロードされたかチェックする。
③strageフォルダに「public/images/」を掘ってここに画像を保存する。
④basenameでファイルパスからファイル名だけを取る→DBに保存
2.Strageファサードを使ったアップロード
use Illuminate\Support\Facades\Storage;//ファサード
if($request->hasFile('image')){//①
if($request->file('image')->isValid()){//②
$image_path = Storage::put('/public/images/', $request->file('image'));//③
$image_path=basename($image_path);//④
}
}
ファサード:Storageファサードの宣言
①hasFile('image')はファイルがちゃんと送信されたかチェックする。
②isValid()はファイルがアップロードされたかチェックする。
③strageフォルダに「public/images/」を掘ってここに画像を保存する。
④basenameでファイルパスからファイル名だけを取る→DBに保存
3.表示
<img class="rounded mx-auto d-block" style="" src="{{ asset('storage/images/'.$memo['image']) }}">
asset:現在のリクエストのスキーマ(HTTPかHTTPS)を使い、アセットへのURLを生成
publicにstrageへのシンボリックリンクがある。
そこからimagesの中の該当画像を表示する。