web-dev-qa-db-fra.com

Comment accéder à l'image de / stockage -Laravel - du spa avec Vuejs

si je mettez une image dans "Storage/App/Public/img/logo.png" et exécutez:

$ php artisan storage:link

Comment puis-je obtenir ce logo.png in vue composant?

<img src="storage/app/public/img/logo.png">

Le demandé c'est bon (200) mais cette image ne rend pas, car est un spa.

Merci,

7
Wiicho Orozco

Eh bien, après faire:

$ php artisan storage:link

Dans mon composant j'ai utilisé:

<img :src="'../storage/img/logo.png'">

merci,

4
Wiicho Orozco

Quand vous utilisez le storage:link commande, vous créez un lien symbolique entre votre storage/app/public Dossier et votre public/storage dossier.

Donc maintenant, vous pouvez trouver vos fichiers à l'URL $BASE_URL/storage/img/logo.png.

Je vous recommande d'utiliser la fonction asset-helper à l'intérieur de votre modèle de lame:

<img src="{{ asset('storage/img/logo.png' }}">

Remarque: Assurez-vous de définir les autorisations de fichier appropriées sur le dossier ou d'obtenir une erreur Unauthorized lorsque vous essayez d'y accéder.

2
gbalduzzi

J'espère que ma réponse aidera quelqu'un, créer un lien symbolique en utilisant cette commande

php artisan storage:link

maintenant, utilisez-le dans vous vue Modèle comme suit

/storage/path/to/file
1
Chandan Bisht

Lorsque vous utilisez php artisan storage:link Vous créez un lien simbolique à partir de public/storage À storage/app/public

Je suis habitué à utiliser asset plutôt chemin régulier: essayez d'utiliser src="{{ asset('storage/app/public/img/logo.png') }}

Il est supposé que si vous utilisez un spa, lorsqu'un composant rend une nouvelle demande d'obtenir le IMG.

1
Drusto

J'ai le mien en travaillant avec ce processus:

  1. Vérifiez config/filesystems.php (C.-à-d.: Défaut non modifié):
    // If server doesn't support "making symbolic links":
    // https://medium.com/@shafiya.ariff23/how-to-store-uploaded-images-in-public-folder-in-laravel-5-8-and-display-them-on-shared-hosting-e31c7f37a737
    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
  1. Enregistrer une image:
   $image = $request->file('image'); // something like that
   $slug = 'some-slug-99';

   $image->storeAs(
       'examples' .'/'. $slug,
       $image->getClientOriginalName(),
       'public'
   );
  1. Créez le symbile à partir de /storage/app/public À public/storage (C.-à-d.: Votre dossier HTML public qui fait asset() Work In Laravel Modèles de lame, je pense mais ne me cite pas sur ça)
$ php artisan storage:link
  1. Placez le HTML dans votre Vue Composant:
<img
    v-for="image in example.images"
    :key="image.filename"
    :src="`/storage/examples/${example.slug}/${image.filename}`"
>

Aussi, lisez les documents: https://laravel.com/docs/8.x/fileSystem

0
agm1984