【Laravel6】データベースに登録した画像パスを取得し表示したい
解決したいこと
XAMPP環境にてLaravel6でレシピ投稿アプリを作っています。
データベースにある画像パスを取得しview側で表示させたいのですが、画像が表示されません。
シンボリックリンクがうまく作成されていないせいなのか、画像のパスが間違っているのかどちらが原因かわからない状況です。
発生している問題
「php artisan storage:link」コマンドを実行しましたが、以下のようなメッセージが表示されます。
The system cannot find the path specified.
The [public/storage] directory has been linked.
その後publicファイルを調べましたが、シンボリックリンクが作成されていませんでした。
$ ls -la public
total 22
drwxr-xr-x 1 ×××× □□□□ 0 Aug 15 13:23 ./
drwxr-xr-x 1 ×××× □□□□ 0 Jul 12 15:09 ../
-rw-r--r-- 1 ×××× □□□□ 593 May 12 2021 .htaccess
drwxr-xr-x 1 ×××× □□□□ 0 Jul 22 15:20 css/
-rw-r--r-- 1 ×××× □□□□ 0 May 12 2021 favicon.ico
drwxr-xr-x 1 ×××× □□□□ 0 Aug 1 09:50 images/
-rw-r--r-- 1 ×××× □□□□ 1823 May 12 2021 index.php
drwxr-xr-x 1 ×××× □□□□ 0 Jul 27 10:27 js/
-rw-r--r-- 1 ×××× □□□□ 24 May 12 2021 robots.txt
-rw-r--r-- 1 ×××× □□□□ 1194 May 12 2021 web.config
画像のパスに関するコード部分は以下になります。
Contoroller(画像投稿部分)
CreateController.php
$recipe_image = $request->file('product_image');
if ($recipe_image) {
$image_path = Storage::disk("public")->putFile('profile', $recipe_image);
$imagePath = "/storage/" . $image_path;
$recipe->product_image = $imagePath;
}
else {
$image_path = null;
}
画像自体は「storage/app/public/profile」に保存されています。
データベース(MySQL)
表示させたいView部分
preview.blade.php
@extends('layout')
@section('content')
<div>
{{ $recipes->product_image }}
<img src="{{ asset($recipes->product_image) }} " >
</div>
@endsection
実際にview側で表示されるのは以下画像になります。
(パスが正しいかどうか確かめるため、パスそのものも表示させてあります)
データベースにある画像パス、取得してきた画像パスは一致しているのですが、画像が表示されませんでした。
よろしくお願いいたします。
0