Skip to content

Latest commit

 

History

History
38 lines (34 loc) · 1.54 KB

20-image-upload.md

File metadata and controls

38 lines (34 loc) · 1.54 KB

Stockage des images.

Comme tout dans laravel, le stockage des images ou fichiers peut se faire de plusieurs façons, nous allons vous faire voir la méthode fournit avec le framework.
Vous pouvez configurer le stockage dans le fichier config/filesystem.php. Ici, on va se servir du stockage public qui sera accessible en lecture aux utilisateurs de l'application.

Modifions la méthode store dans ArticlesController pour utiliser ce disk

Article::create([
    'title' => $request->title,
    'body' => $request->body,
    'user_id' => $request->user_id,
    'image' => $request->file('image')->store('img', 'public')
]);

On a modifié la méthode qui crée l'article pour enregistrer l'image dans le dossier storage/app/public/img, ce dossier sera créé automatiquement.
La méthode $request->file('image') accepte le name du formulaire.

Le nom de l'image est changé et l'image est 'uploadée' et enregistrée en BDD.

Ensuite dans le template, on récupère l'image ainsi :

<img src="{{ asset($article->image) }}" alt="image">

Si on essaye maintenant, ça ne marchera pas, nous devons créer un lien au niveau du système pour que cela fonctionne.

On débute par le tableau links dans le fichier de configuration config/filesystem.php, on ajoute une ligne pour notre dossier :

'links' => [
    public_path('storage') => storage_path('app/public'),
    // Ajout
    public_path('img') => storage_path('app/public/img'),
],

Ensuite on crée le lien :

php artisan storage:link

Et c'est tout.