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 dansconfig/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
VariableFILESYSTEM_DISK :
Disque public et lien symbolique
Le disquepublic 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.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.
Upload de fichiers
store (nom généré)
storeAs (nom explicite)
Spécifier un disque
Via la façade Storage
Visibilité des fichiers
Flysystem gère la visibilité (public / privé).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.