Laravelで画像を保存する場所、表示させる方法

Laravel
スポンサーリンク

やりたいこと

Laravelにおいて、イメージファイル(画像ファイル)を保存したい。

保存場所を知りたい。

保存した画像はWebで公開する。

参考にしたサイト

Laravelのstorageフォルダで画像を管理する | Web Apps Labo
こんにちは。今回はLaravelで開発したアプリケーション内で画像を表示したい場合に、どこに画像ファイルを配置するべきなのかをを解説していきます。概要Laravelプロジェクト内で画像を管理する場合、画像はpublicフォルダから見える場所に保存しなければなりません。画像はstorageフォルダで管理する場合、publ...

わかりやすい。助かりました。
ここだけ見たら当記事タイトルに書いた目的達成できるはず。

Laravelで画像のアップロードと表示してみよう | みぎさんドットコム
Laravelでは画像ファイルを扱うための機能が用意されているので、簡単に画像ファイルを操作することができます。 この記事では画像をアップロードしたり表示させたりする機能を実装することで、Laravelでの画像ファイルの扱い方を理解していき
  • 画像のアップロードフォーム設置
  • 画像PathをDBへ保存する

まで記載されている。
今後参考にすると思う。

保存場所

保存場所は2パターンある。

  • public/ 配下
  • storage/ 配下

後者のstorage配下にするのが良い模様。

public/ 配下ではなく、 storage/ 配下に保存するメリット

メリットは以下3点らしい。

  1. ファイルの安全性が高まる
    publicディレクトリに直接保存する場合、URLを知っている第三者がアクセスできる可能性がありますが、storageディレクトリに保存することで、アプリケーション内からしかアクセスできないようにできます。これにより、ファイルの安全性が高まります。

  2. バックアップが容易になる
    storageディレクトリに保存されたファイルは、バックアップを取りやすくなります。publicディレクトリに保存されたファイルは、Webサーバーから直接アクセスできるため、バックアップを取ることが難しい場合があります。

  3. ファイルの管理が容易になる
    storageディレクトリは、アプリケーションのファイル保存用のディレクトリとして、デフォルトで用意されているため、ファイルの管理が容易になります。publicディレクトリに画像ファイルを保存する場合、専用のディレクトリを作成する必要がありますが、storageディレクトリを利用することで、ファイルの保存場所を明確にすることができます。

storage/ への保存方法

Laravelのデフォルトの設定であれば以下のとおり。

1. storage のシンボリックリンクを publicに張る

以下のコマンドで、storage のシンボリックリンクを publicに張る

php artisan storage:link

さすれば、public/ 直下に以下のようにシンボリックリンクが張られる。

storage -> /ららべるディレクトリ/storage/app/public

なお、この設定をいじりたい場合(シンボリックのPathを変えたい場合)、

config/filesystem.php

の以下の設定をいじる。

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

2. 画像ファイルを配置する

storage/app/public/ 直下へ画像ファイルを配置する。

3. viewから参照する

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

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

[R]

public/ への保存方法

先述したとおり、public/ 配下ではなく、storage/ 配下に保存したほうが良い。

だが、public/ 配下へも保存できる。

これは単純に public/ 直下に画像ファイルを保存すれば良いだけ。

public/example.png

は、

https://example.com/example.png

で参照できる。

コメント