【Laravel7】画像をアップロード、保存する機能
基本は↓を見てやる。
注意点
image_list.blade.php
<a href="{{ route('show.form') }}">Upload</a>
<hr />
@foreach($images as $image)
<div style="width: 18rem; float:left; margin: 16px;">
↓これだと動かない
<img src="{{ Storage::url($image->file_path) }}" style="width:100%;"/>
↓これだと動く
<img src="{{ asset('storage/' . $image->file_path) }}" style="width:100%;" />
<p>{{ $image->file_name }}</p>
</div>
@endforeach
<img src="{{ Storage::url($image->file_path) }}"だとなぜか、画像のURLにサイト名とpublicが入らず表示されない。
そのため、img src="{{ asset('storage/' . $image->file_path) }}"にする。
公式ドキュメントを見ると、{{ asset('storage/' . $image->file_path) }}になっているので、Storage::~のほうはLaravel8からの書き方なのかな?
でも前に一回上記ブログ見て作ったときは、Storageで動いた記憶があるんだよなあ。。。
注意点2
滅多にないと思うが、途中で開発環境をdockerなどに変更した場合は、
以下の操作を行う必要がある。
1. publicディレクトリまで移動してから、以下コマンドでpublic/storageにあるシンボリックリンクを削除する。
unlink storage
2. 再度以下コマンドでシンボリックリンクを貼る。
php artisan storage:link
参考:https://a-records.info/laravel-docker-symlink-error/
この記事が気に入ったらサポートをしてみませんか?