je voudrais montrer une image dans un fichier html je vais dans le dossier de liens public/stockage/image est vide mais dans le stockage/image je trouve le fichier et son également enregistré dans la base de données. *
@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>
Le disque public
est destiné aux fichiers qui seront accessibles au public. Par défaut, le disque public
utilise le pilote local et stocke ces fichiers dans storage/app/public
. Pour les rendre accessibles à partir du Web, vous devez créer un lien symbolique à partir de public/storage
à storage/app/public
. doc Laravel
Créer un lien symbolique dans Linux
ln -s source_file myfile
Tout d'abord dans le fichier (. Env créez une variable nommée FILESYSTEM_DRIVER et réglez-la sur - public
comme ceci
FILESYSTEM_DRIVER=public
puis créer un lien symbolique par exécution
php artisan storage:link
après cela, utilisez simplement asset ()
<img src="{{ asset('storage/'.$cv->photo) }}" alt="...">
Ça marchera bien ????
résolu avec juste une simple modification sur la configuration des systèmes de fichiers/systèmes de fichiers à partir de:
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
]
à :
'local' => [
'driver' => 'local',
'root' => storage_path('app/public'),
]
Comme le note Mayank Majithya, un lien symbolique est un moyen courant d'accéder aux fichiers storage/app/public/
À partir du répertoire public/
, Et en fait la méthode le Laravel = docs dites que vous devez utiliser.
Si vous êtes sur un hébergement partagé qui interdit cela, vous pouvez également essayer d'utiliser la fonction d'assistance storage_path()
de Laravel, comme ceci: <img src="{{ storage_path('subpaths/under/storage/filename.jpg') }}">
( reference ).
Je remarque également que vous mentionnez que les images sont stockées dans la base de données. Si vous voulez dire que le fichier entier est stocké, il peut être plus efficace (une fois que vous avez déterminé le chemin d'accès au fichier) de stocker uniquement le chemin d'accès au fichier dans votre base de données, plutôt que le fichier entier (car il est déjà stocké sur le disque). Vous pouvez ensuite utiliser votre modèle pour obtenir le chemin d'accès (en supposant que votre table possède des colonnes pour, disons, 'src' et 'alt'):
<img src="{{ $mymodel->src }}" alt="{{ $mymodel->alt }}">
Cela a fonctionné pour moi. J'ai ajouté la commande "Artisan :: call ('storage: link', []);" au début du fichier d'itinéraire et supprimé le dossier de stockage du public.
Il est important de supprimer d'abord le dossier, sinon cela ne fonctionnera pas.
Suppression du code de la route, s'il fonctionne, car il ne devrait s'exécuter qu'une seule fois sur le serveur.