質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

1157閲覧

laravel 画像投稿機能で画像が正しく表示されない

kazuma-shino

総合スコア1

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2020/10/08 08:17

編集2020/10/08 08:18

前提・実現したいこと

服の管理アプリを作っています。

そこで服の画像を投稿し、表示させたい。

発生している問題・エラーメッセージ

イメージ説明

上記のように正しく画像が表示されません

該当のソースコード

ClothController.php

/** * 服一覧を表示 * * @return view */ public function getClothShow(Request $request) { // Clothモデルのデータを取得 $clothes = $request->user()->clothes; return view('cloth.list',compact('clothes')); } /** * 服を追加する * * @return view */ public function exeClothAdd(ClothRequest $request) { \DB::beginTransaction(); try{ //フォームから送られてきたものを受け取る $cloth=new Cloth; $cloth->category=$request->category; $cloth->name=$request->name; $cloth->size=$request->size; $cloth->brand=$request->brand; $cloth->buy_date=$request->buy_date; $cloth->price=$request->price; //画像をpublicに保存 $filename=$request->file('image')->store('public'); // 保存するファイル名からpublicを除外 $cloth->image=str_replace('public/','',$filename); //ログイン者のuse_idを代入 $cloth->user_id=$request->user()->id; //データに登録 $cloth->save(); \DB::commit(); }catch(\Throwable $e) { \DB::rollback(); abort(500); } \Session::flash('err_msg','アイテムを追加しました'); return redirect(route('show_cloth')); }

一覧表示用のview
list.blade.php

@foreach($clothes as $cloth) <tr> <th scope="row"><img src="{{ asset('/storage/'.$cloth->image_file)}}"></th> <td>{{$cloth->category}}</td> <td>{{$cloth->name}}</td> <td>{{$cloth->category}}</td> <td>{{$cloth->size}}</td> <td> <a href="/cloth/{{$cloth->id}}" class="btn btn-primary btn-sm">詳細</a> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#edit_clothes{{$cloth->id}}">編集</button> <tr> @endforeach

データ送信用フォームのview

<div class="container"> <!-- モーダルを開くボタン・リンク --> <div class="container"> <div class="row my-3"> <h1>モーダルを開く</h1> </div> <div class="row mb-5"> <div class="col-2"> <button type="button" class="btn btn-primary mb-12" data-toggle="modal" data-target="#add_clothes">ボタンで開く</button> </div> </div> </div> </div> <!-- ボタン・リンククリック後に表示される画面の内容 --> <div class="modal fade" id="add_clothes" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4>新しく服を追加する</h4> </div> <div class="modal-body"> <form method="post" action="{{route('add_cloth')}}" enctype="multipart/form-data"> @csrf <div class="form-group"> <label for="category">カテゴリー:</label> <select class="form-control" id="category" name="category"> <option>トップス</option> <option>ジャケット/アウター</option> <option>パンツ</option> <option>スカート</option> <option>ワンピース</option> <option>スーツ/ネクタイ</option> <option>バッグ</option> <option>シューズ</option> <option>帽子</option> <option>アクセサリー</option> </select> <!-- バリデーションの受け取り --> @if($errors->has('category')) <div class="text-danger">{{$errors->first('category')}}</div> @endif </div> <div class="form-group"> <label for="name">名前:</label> <input type="text" class="form-control" id="name" name="name"> </div> <div class="form-group"> <label for="size">サイズ:</label> <select class="form-control" id="size" name="size"> <option>XS</option> <option>S</option> <option>M</option> <option>L</option> <option>XL</option> <option>XXL</option> </select> </div> <div class="form-group"> <label for="brand">ブランド:</label> <input type="text" class="form-control" id="brand" name="brand"> </div> <div class="form-group"> <label for="brand">購入日:</label> <input type="date" class="form-control" id="buy_date" name="buy_date"> </div> <div class="form-group"> <label for="price">価格:</label> <input type="number" class="form-control" id="price" name="price"> </div> <div class="form-group"> <label for="image">画像:</label> <input type="file" class="form-control" id="image" name="image"> </div> <button type="submit" class="btn btn-primary">追加する</button> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">閉じる</button> <button type="button" class="btn btn-danger">削除</button> </div> </div> </div> </div>

試したこと

storage/app/publicに画像ファイルが.jpegで追加されていることを確認
フォルダの共有とアクセス権を「everyone 読み書き可」に設定

補足情報(FW/ツールのバージョンなど)

画像投稿機能実装にあたって参考にしたサイト
https://note.com/code82/n/n5f5300822007

laravel6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2020/10/08 11:01

imgのパスはどのように出力されていますか?
kazuma-shino

2020/10/08 15:54

/Applications/MAMP/htdocs/clonet/storage/app/public/QhJG3wAM0LdbyzWyDsmvrenHXLWz8b4qJLnZm2Uk.jpeg このようになってます。
guest

回答1

0

自己解決

カラム名がimage_fileではなくimageであることに気づいたため以下に変更
<img src="{{ asset('/storage/'.$cloth->image)}}">

カラム設定がbinaryだったのでstringに変更

投稿2020/10/09 03:54

kazuma-shino

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問