Skip to main content

Qu’est-ce que le stockage de fichiers

Laravel fournit une couche d’abstraction puissante basée sur le package PHP Flysystem. Vous manipulez disque local, SFTP, Amazon S3, etc. avec la même API — sans changer de code en basculant de backend.
Changer de driver ne change pas votre code. Vous pouvez utiliser le disque local en dev et S3 en production sans effort.

Configuration

La configuration se trouve dans config/filesystems.php où vous définissez des « disques » (combinaison driver + emplacement). Principaux drivers :

Driver local

Les opérations se font relativement au root configuré. Par défaut : storage/app/private.

Changer le disque par défaut

Variable FILESYSTEM_DISK :

Disque public et lien symbolique

Le disque public héberge les fichiers accessibles depuis le web. Par défaut, il stocke dans storage/app/public. Pour rendre accessible depuis le serveur web, créez un lien symbolique de public/storage vers storage/app/public.
1

Créer le lien symbolique

2

Générer l'URL du fichier

Après création du lien, utilisez asset.
Pour ajouter d’autres liens, configurez links dans config/filesystems.php.
Pour supprimer les liens : storage:unlink.

Opérations avec la façade Storage

Lecture

Écriture

En cas d’échec, put retourne false par défaut. Configurez 'throw' => true sur le disque pour lever une exception.

Suppression

Réponse de téléchargement

Génération d’URL

URL normale

local retourne une URL relative (/storage/file.jpg), s3 retourne l’URL distante complète.

URL temporaire

temporaryUrl génère une URL à durée limitée. Disponible sur local et s3.
Pour S3, des paramètres supplémentaires sont possibles.
Pour des URLs d’upload temporaires : temporaryUploadUrl. Utile en architecture serverless (upload direct client → S3).

Upload de fichiers

store (nom généré)

storeAs (nom explicite)

Spécifier un disque

Via la façade Storage

getClientOriginalName() et getClientOriginalExtension() peuvent être manipulés par l’utilisateur. Utilisez hashName() et extension().

Visibilité des fichiers

Flysystem gère la visibilité (public / privé).
Pour rendre un fichier uploadé public : storePublicly.

Utiliser plusieurs disques

Configuration S3

Installer le package

Variables d’environnement

DigitalOcean Spaces, Cloudflare R2, Vultr Object Storage… sont accessibles via le driver s3 en configurant endpoint.

Métadonnées

Opérations sur les répertoires

Tests

Storage::fake() permet de tester sans toucher au disque réel.
UploadedFile::fake()->image() nécessite l’extension GD.

Exemple : upload d’avatar

Validation, sauvegarde et persistance du chemin.
Dans le template :
Dernière modification le 13 juillet 2026