Laravelで画像を表示する方法はいくつか(外部ストレージを使う等)あります。
本記事では、Laravelの”storage/app/public”ディレクトリに画像を保存して、表示する方法を紹介します。
前提知識
Laravelには”public”というフォルダが2つあります。
“/public”と”storage/app/public”です。
- “/public”は、開発者側が用意した画像(ロゴなど)を保存する場所
- “storage/app/public”は、ユーザー側がアップロードした画像を保存する場所
Laravelで画像を保存/表示する手順
画像を保存する方法と表示する方法の2つに分けて解説します。
画像を保存する
まず、bladeファイルでフォームを作ります。
{!! Form::file('document', ['class' => 'form-control']) !!}
次に、コントローラーを編集します。
public function store(Request $request)
{
$document = $request->document;
// 画像を"storage/app/public"に保存
$document->store('public');
}
store()メソッドを使います。
これで画像を”storage/app/public”に保存できました。
画像を表示する
はじめに、知っておくべきポイントがあります。
- 画像の保存は、“storage/app/public”
- 画像の表示は、“public/storage”
つまり、画像を表示させるには、”public/storage”から”storage/app/public”にアクセスできるようにする必要があります。
これをシンボリックリンクと言います。
シンボリックリンクを張るには、下記のコマンド打てば良いです。
php artisan storage:link
下記のように表示されたら成功しています。
The [public/storage] directory has been linked.
“public”に移動して、確認することもできます。
[XXXX@XXXX public]$ ls -la
合計 XX
// 中略
lrwxrwxrwx 1 XXXX XXXXX 95 4月 15 11:51 storage -> /home/test/storage/app/public
// 中略
上記のように表示されていたら、成功しています。
あとは、“{ドメイン名}/storage/{画像ファイル名}”にアクセスすれば画像が表示されます。
まとめ
Laravel開発で画像を保存して表示することはよくあるので、覚えておきましょう。
WEBアプリ開発の幅が広がりますよね。
以上、『Laravel】画像を保存して表示する方法』でした。