comment et où puis-je stocker des images à l'aide de laravel?
contexte: Je veux afficher des images dans ma vue principale (celles-ci sont prédéfinies par moi) . Je souhaite également stocker des images téléchargées par les utilisateurs, mais je ne sais pas où les stocker.
Je voudrais appeler ceux-ci de la vue ...
Merci beaucoup pour l'aide. :)
En gros, vous pouvez enregistrer vos fichiers où vous le souhaitez dans votre application Laravel, à condition que vous disposiez des autorisations nécessaires pour créer un répertoire et un fichier.
Mais je préfère enregistrer les fichiers dans le dossier storage/app
. Laravel fournit une API simple pour manipuler des fichiers sur le disque. Voir le docs .
Mettre à jour:
Cette réponse a été publiée lorsque Laravel était dans la version 5.2 . À partir de la version 5.3, vous pouvez facilement créer des liens symboliques en exécutant la commande artisan php artisan storage:link
. Voir le docs .
Si vous souhaitez les afficher sur votre site, stockez-les dans votre répertoire public. Comme ils sont téléchargés par les utilisateurs, vous devrez les transmettre via un formulaire. Voici un exemple de contrôleur.
$file = Input::file('picture');
$file->move(public_path().'/images/',$user->id.'.jpg');
L'utilisateur soumettra un formulaire avec un champ d'image. Les deux lignes ci-dessus le stockent dans le répertoire public dans un dossier images, avec l'identifiant de l'utilisateur correspondant comme nom. Vous avez probablement intérêt à créer un modèle dans votre base de données pour les images et leurs chemins. Si vous le faites, ajoutez ces lignes après les deux précédentes.
$image = new Image;
$image->path='/images/'.$user->id.'.jpg';
$image->user_id = $user->id;
$image->save();
Pour l'afficher dans la vue, définissez simplement une variable $ image sur le modèle d'image correct dans votre contrôleur et transmettez-la à la vue. Puis pop son chemin dans le src de l'image.
<img src={{$image->path}} alt={{$image->path}}>
Créez un répertoire pour les images dans myapp/public/images et conservez les images dessus.
<img src="{{URL('/images/logo.jpg')}}">