Laravel 6

Problème d'affichage d'image

Avatar de mr_debutant
mr_debutant

Bonjour à tous,

Je suis actuellement en train de faire mon site avec laravel, cependant j'ai un petit problème.

J'utilise voyager comme panel d'administration et lorsque j'importe une image dans ma table dans ce panel d'administration et que j'ai fait cette ligne de commande dans ma vue :

<div class="product_image">
    <img src="{{ asset('storage/' . $productwomen->image_generale) }}" alt="">
</div>

Mon image ne s'affiche pas ...

Et quand je regarde dans "network", j'ai cela qui apparait :

Request URL: http://ecommerce/public/products/August2020/yhpaTpibqLygFaNXMnUX.jpg
Request Method: GET
Status Code: 404 Not Found
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade

Si quelqu'un pourrait m'aider, ça serait vraiment cool ^^

Merci d'avance !

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Dans le code source en front c'est le lien http://ecommerce/public/products/August2020/yhpaTpibqLygFaNXMnUX.jpg qui apparait, donc ? C'est étrange que l'expression 'storage/' n'apparaisse même pas... Et ton APP_URL est bien renseigné dans ton .env ?

Posté il y a 1 mois
Avatar de bestmomo
bestmomo

Salut,

Tu as créé un lien symbolique vers storage/app/public ?

Posté il y a 1 mois
Avatar de mr_debutant
mr_debutant

**Réponse à CinquièmeDimension : ** oui c'est ça, le storage n'apparait pas .. En ce qui concerne mon APP_URL, j'ai cela :

APP_URL=http://ecommerce/public/

C'est bon normalement, non ?

**Réponse à bestmomo : ** Je débute dans laravel, pourrais tu me dire comment faire stp ?

Posté il y a 1 mois
Avatar de bestmomo
bestmomo

Le dossier storage n'est pas fait pour être accessible. Par défaut le disque local de Laravel pointe sur storage/app/public pour une vaseuse raison de déploiement qui ne m'a jamais convaincu. De mémoire Voyager place les médias dans storage. Pour que ces médias soient accessibles du web il faut créer un lien symbolique qui transforme public/storage en storage/app/public. On a une commande Artisan pour ça :

php artisan storage:link

Du coup avec ça quand on utilise l'helper asset ça fonctionne :

asset('storage/monfichier.txt');

Mais franchement c'est se compliquer la vie pour rien.

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Pour créer le lien symbolique, il suffit de faire un php artisan storage:link https://laravel.com/docs/7.x/filesystem#introduction

Concretement ca va faire un raccourcis dans /public/storage qui mène vers /storage/app/public Si tu observe tes fichiers, ton image devrait être dans /public/storage/products/August2020 (storage étant ou non un lien symbolique). Va voir déjà si l'image y est pour vérifier qu'elle a bien été enregistrée.

Ensuite, il est possible de customiser le lien asset() avec un ASSET_URL=http://example.com/assets dans ton fichier .env https://laravel.com/docs/7.x/helpers#method-asset Si tu as fait ça, tu peux essayer de l'enlever.

Posté il y a 1 mois
Avatar de mr_debutant
mr_debutant

J'ai fait ce que vous m'avez dit et ça marche !!! Je vous remercie beaucoup !! Ca faisait depuis 3 jours que j'étais bloqué sur ce problème Vous êtes des monstres !!!!

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Super ! Tu peux passer ton post en résolu alors. Tu sais d'où ca venait du coup ou t'as pas cherché et t'as tout fait d'un coup avant de tester ?

Posté il y a 1 mois
Avatar de mr_debutant
mr_debutant

J'ai juste fait ce que vous m'avez dit et ça marchait ^^

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.