Laravelのstorageフォルダで画像を管理する

こんにちは。今回はLaravelで開発したアプリケーション内で画像を表示したい場合に、どこに画像ファイルを配置するべきなのかをを解説していきます。

概要

Laravelプロジェクト内で画像を管理する場合、画像はpublicフォルダから見える場所に保存しなければなりません。画像はstorageフォルダで管理する場合、publicフォルダにstorageフォルダのシンボリックリンクを作成することで、storageフォルダを参照できるようにします。

storageフォルダへのシンボリックリンクを作成する

シンボリックリンクを作成するにはartisan storage:linkコマンドを実行します。

php artisan storage:link

このコマンドを実効するとconfig/filesystem.phpのlinks設定に基づきシンボリックリンクを作成します。

    'links' => [
        public_path('storage') => storage_path('app/public'),
    ],

デフォルトではstorage/app/publicへのリンクをpublic/storageに作成する設定があらかじめ記述されています。必要であればlinksに自由に設定を追加することができます。

画像の配置、viewから参照

artisan storage:linkコマンドを実行後、storage/app/publicに画像を配置しましょう。今回はsample.jpgを配置します。

次にviewから参照します。assetヘルパ関数を使うと画像のURLを生成してくれます。また、先程、storage/app/publicへのシンボリックリンクをpublic/storageとして作成しましたので、storage/sample.jpgで画像を参照することができます。

asset('storage/sample.jpg')

bladeからimgタグで参照する場合は以下のように記述します。

<img src="{{asset('storage/sample.jpg')}}">

まとめ

いかがでしょうか。画像のフォルダをLaravelで公開する方法を解説しました。ちなみにstorageフォルダ以外のフォルダもシンボリックリンクで指定することができます。

Laravel

Posted by kobainmac