PR

【Laravel】画像を保存して表示する方法

アイキャッチ画像

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】画像を保存して表示する方法』でした。