【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/


この記事が気に入ったらサポートをしてみませんか?