Dans le développement d'applications Laravel, le téléchargement de fichiers est une opération très courante. Laravel fournit un moyen très pratique de gérer ces fichiers téléchargés, à savoir le système de fichiers. Le système de fichiers est en fait la méthode de stockage par défaut de Laravel et il stocke les fichiers téléchargés dans un emplacement spécifié sur le disque.
Cependant, dans certains cas, nous devrons peut-être stocker les fichiers téléchargés dans d'autres emplacements, tels que le stockage cloud, CDN ou d'autres services de stockage à distance. À l'heure actuelle, nous devons modifier la méthode de stockage par défaut de Laravel afin qu'elle puisse s'adapter à nos besoins.
Cet article expliquera comment modifier le stockage par défaut dans Laravel pour s'adapter à différents scénarios.
1. Système de fichiers Laravel
Dans Laravel, le système de fichiers est utilisé pour gérer les fichiers et les répertoires. Le système de fichiers de Laravel comprend certaines opérations de base, telles que la création de fichiers, la lecture de fichiers, la mise à jour de fichiers et la suppression de fichiers.
Le système de fichiers de Laravel peut utiliser plusieurs disques pour le stockage, y compris des disques locaux, un stockage cloud tel que S3, un stockage FTP, etc.
Nous pouvons configurer le système de fichiers de Laravel dans le fichier de configuration config/filesystems.php :
<code class="php"><?php return [ 'default' => 'local', 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), ], ], ];</code>
Dans le code ci-dessus, nous pouvons voir que trois types de disques sont configurés ici : disque local (local), disque public (public) et Stockage cloud S3 (s3).
2. Modifier le stockage par défaut
Dans Laravel, nous pouvons utiliser la classe Storage pour gérer le système de fichiers. Par défaut, Laravel utilisera le disque local comme emplacement de stockage du système de fichiers par défaut. Ce disque par défaut est défini dans config/filesystems.php et la valeur par défaut est locale.
Nous pouvons modifier l'élément de configuration par défaut de config/filesystems.php pour modifier le stockage par défaut :
<code class="php"><?php return [ 'default' => env('FILESYSTEM_DRIVER', 'local'), 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), ], ], ];</code>
Dans le code ci-dessus, nous changeons la valeur par défaut de local à env('FILESYSTEM_DRIVER', 'local'). La fonction env est utilisée ici, qui nous permet de définir la variable d'environnement FILESYSTEM_DRIVER dans le fichier .env pour modifier le stockage par défaut.
Par exemple, si vous définissez FILESYSTEM_DRIVER=s3 dans le fichier .env, alors lors de l'utilisation du système de fichiers de stockage, Laravel utilisera le disque s3 comme emplacement de stockage par défaut du système de fichiers.
3. Utiliser un stockage personnalisé
En plus de modifier le stockage par défaut, nous pouvons également configurer un stockage personnalisé pour répondre à nos besoins particuliers.
Tout d’abord, nous devons créer un nouveau pilote de stockage. Dans le répertoire de l'application, créez un nouveau répertoire appelé Storage, puis créez une nouvelle classe dans ce répertoire.
Par exemple, si nous voulons créer un pilote de stockage nommé Hadoop, alors nous pouvons créer une classe nommée HadoopDriver :
<code class="php"><?php namespace App\Storage; use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Support\Facades\Storage; use Illuminate\Support\ServiceProvider; class HadoopDriverServiceProvider extends ServiceProvider { public function boot() { Storage::extend('hadoop', function ($app, $config) { // 返回一个实现了 FilesystemAdapter 接口的类 return new HadoopFileSystemAdapter($config); }); } } class HadoopFileSystemAdapter implements FilesystemAdapter { // 实现 FilesystemAdapter 接口的方法 }</code>
Dans le code ci-dessus, nous définissons une classe HadoopDriverServiceProvider, et dans la méthode de démarrage, enregistrons un nom Nouveau stockage pilote pour hadoop.
Ensuite, nous définissons une classe HadoopFileSystemAdapter, qui implémente toutes les méthodes de l'interface FilesystemAdapter. Ces méthodes seront appelées lorsque nous utiliserons le système de fichiers Storage pour effectuer diverses opérations sur le système de fichiers, telles que la création de fichiers, la lecture de fichiers, la mise à jour de fichiers, la suppression de fichiers, etc.
Enfin, nous devons enregistrer la classe HadoopDriverServiceProvider créée ci-dessus dans l'application Laravel. Cela peut être fait en ajoutant la classe HadoopDriverServiceProvider dans le tableau fournisseurs du fichier config/app.php :
<code class="php"><?php return [ // 省略其它代码 'providers' => [ // 省略其它服务提供者 /* * 注册 Hadoop 存储驱动 */ \App\Storage\HadoopDriverServiceProvider::class, ], ];</code>
4 Utilisation du stockage personnalisé
L'utilisation du stockage personnalisé nécessite d'appeler la méthode de stockage et de spécifier le chemin de stockage. Par exemple, si nous voulons utiliser un stockage personnalisé nommé hadoop, nous pouvons l'utiliser comme ceci :
<code class="php">use Illuminate\Support\Facades\Storage; Storage::disk('hadoop')->put('file.txt', $content);</code>
Dans le code ci-dessus, nous utilisons la méthode disk pour spécifier le stockage à utiliser, en le spécifiant comme hadoop. Nous utilisons ensuite la méthode put pour écrire le contenu de $content dans le fichier file.txt du système de fichiers.
Résumé
Dans le développement d'applications Laravel, le téléchargement et le stockage de fichiers sont des exigences très courantes. Laravel fournit un système de fichiers puissant pour gérer ces opérations, et nous permet également de modifier l'emplacement de stockage par défaut du système de fichiers en fonction de nos propres besoins, et même de créer des pilotes de stockage personnalisés pour répondre à des besoins particuliers. Ces fonctionnalités augmentent considérablement la flexibilité et l’évolutivité des applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!