web-dev-qa-db-ja.com

Laravel 5.4ストレージリンク

hTMLファイルで画像を表示したいのですが、リンクフォルダーに移動しますpublic/storage/imageが空ですが、storage/imageでファイルを見つけ、データベースにも保存します。*

@foreach($cvs as $cv)
                    <div class="col-sm-6 col-md-4">
                    <div class="thumbnail">
                        <img src="{{ asset('storage/'.$cv->photo) }}" alt="...">
                        <div class="caption">
                        <h3>{{ $cv->titre }}</h3>
                        <p>{{$cv->presentation}}</p>
                        <p>
                            <a href="#" class="btn btn-primary" role="button">Afficher</a>
                            <a href="#" class="btn btn-success" role="button">Modifier</a>
                            <a href="#" class="btn btn-danger" role="button">Supprimer</a>
                         </p>
                        </div>
                    </div>
                    </div>
                    @endforeach
                    </div>
               </div>
4
mouhamed slaimi

publicディスクは、一般からアクセスできるファイル用です。デフォルトでは、publicディスクはローカルドライバーを使用し、これらのファイルをstorage/app/publicに保存します。 Webからアクセスできるようにするには、public/storageからstorage/app/publicへのシンボリックリンクを作成する必要があります。 Laravel doc

Linux にシンボリックリンクを作成

ln -s source_file myfile
4
Mayank Majithya

まず最初に。env fileという名前の変数を作成しますFILESYSTEM_DRIVERを作成して-に設定しますpublicこんな感じ

FILESYSTEM_DRIVER=public

そして、実行によってシンボリックリンクを作成します

php artisan storage:link

その後、ただasset()を使用します

<img src="{{ asset('storage/'.$cv->photo) }}" alt="...">

それはうまくいきます????

3
Aamir Kalimi

filesystems config/file systemsの単純な変更でそれを解決しました:

'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ]

へ:

'local' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
        ]
2
mouhamed slaimi

Mayank Majithyaが指摘しているように、シンボリックリンクは_storage/app/public/_ディレクトリから_public/_ファイルにアクセスするための1つの一般的な方法であり、実際にはメソッド the Laravel docs 使用する必要があると言います。

これを許可しない共有ホスティングを使用している場合は、Laravelのstorage_path()ヘルパー関数を次のように使用してみることもできます:<img src="{{ storage_path('subpaths/under/storage/filename.jpg') }}">reference )。

また、画像がデータベースに保存されていることにお気づきでしょうか。ファイル全体が格納されていることを意味する場合は、(ファイルが既にディスクに格納されているため)ファイル全体ではなく、データベースにファイルパスのみを格納する方が(ファイルパスがわかったら)より効率的です。次に、モデルを使用してパスを取得できます(たとえば、テーブルに「src」と「alt」の列があると仮定します)。

_<img src="{{ $mymodel->src }}" alt="{{ $mymodel->alt }}">
_
1
Jacob Runge

これでうまくいきました。コマンド「Artisan :: call( 'storage:link'、[]);」を追加しました。ルートファイルの先頭に移動し、ストレージフォルダーをパブリックから削除しました。

最初にフォルダを削除することが重要です。そうしないと機能しません。

サーバー上で1回だけ実行する必要があるため、機能している場合、ルートからコードを削除しました。

0
Carlos R