ホームページ >PHPフレームワーク >Laravel >laravel デフォルトのストレージを変更する
Laravel アプリケーション開発では、ファイルのアップロードは非常に一般的な操作です。 Laravel は、これらのアップロードされたファイルを管理するための非常に便利な方法、つまりファイル システムを提供します。ファイルシステムは実際にはLaravelのデフォルトの保存方法であり、アップロードされたファイルをディスク上の指定された場所に保存します。
ただし、場合によっては、アップロードされたファイルをクラウド ストレージ、CDN、その他のリモート ストレージ サービスなどの他の場所に保存する必要がある場合があります。現時点では、Laravel のデフォルトのストレージ方法を変更して、ニーズに適応できるようにする必要があります。
この記事では、さまざまなシナリオに適応するためにLaravelのデフォルトのストレージを変更する方法を紹介します。
1. Laravel ファイルシステム
Laravel では、ファイルとディレクトリを管理するためにファイル システムが使用されます。 Laravel のファイル システムには、ファイルの作成、ファイルの読み取り、ファイルの更新、ファイルの削除など、いくつかの基本的な操作が含まれています。
Laravel のファイルシステムは、ローカルディスク、S3 などのクラウドストレージ、FTP ストレージなどを含む複数のディスクをストレージとして使用できます。
Laravel のファイル システムは 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>
上記のコードでは、ここで 3 種類のディスクが設定されていることがわかります: ローカル ディスク (ローカル)、パブリック ディスク (パブリック)、 S3 クラウド ストレージ (s3)。
2. デフォルトのストレージを変更する
Laravel では、Storage クラスを使用してファイルシステムを管理できます。デフォルトでは、Laravel はデフォルトのファイルシステムの保存場所としてローカルディスクを使用します。このデフォルトのディスクは config/filesystems.php で定義されており、デフォルト値はローカルです。
config/filesystems.php のデフォルト設定項目を変更して、デフォルトのストレージを変更できます:
<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>
上記のコードでは、default の値を local から env('FILESYSTEM_DRIVER', 'local') に変更します。ここでは env 関数が使用されています。これにより、.env ファイル内で FILESYSTEM_DRIVER 環境変数を定義して、デフォルトのストレージを変更できるようになります。
たとえば、.env ファイルで FILESYSTEM_DRIVER=s3 を定義すると、ストレージ ファイル システムを使用するときに、Laravel はデフォルトのファイル システムのストレージ場所として s3 ディスクを使用します。
3. カスタム ストレージを使用する
デフォルトのストレージを変更するだけでなく、特別なニーズに合わせてカスタム ストレージを構成することもできます。
まず、新しいストレージドライバーを作成する必要があります。アプリ ディレクトリ内に、Storage という新しいディレクトリを作成し、そのディレクトリ内に新しいクラスを作成します。
たとえば、Hadoop という名前のストレージ ドライバーを作成したい場合は、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>
上記のコードでは、HadoopDriverServiceProvider クラスを定義し、ブート メソッドで名前を登録します 新しいストレージHadoop 用のドライバー。
次に、FilesystemAdapter インターフェイスのすべてのメソッドを実装する HadoopFileSystemAdapter クラスを定義します。これらのメソッドは、ストレージ ファイル システムを使用して、ファイルの作成、ファイルの読み取り、ファイルの更新、ファイルの削除など、ファイル システム上でさまざまな操作を実行するときに呼び出されます。
最後に、上で作成した HadoopDriverServiceProvider クラスを Laravel アプリケーションに登録する必要があります。これを行うには、config/app.php ファイルのプロバイダー配列に HadoopDriverServiceProvider クラスを追加します:
<code class="php"><?php return [ // 省略其它代码 'providers' => [ // 省略其它服务提供者 /* * 注册 Hadoop 存储驱动 */ \App\Storage\HadoopDriverServiceProvider::class, ], ];</code>
4. カスタム ストレージの使用
カスタム ストレージを使用するには、ストレージ メソッドを呼び出してストレージ パスを指定する必要があります。たとえば、hadoop という名前のカスタム ストレージを使用したい場合は、次のように使用できます:
<code class="php">use Illuminate\Support\Facades\Storage; Storage::disk('hadoop')->put('file.txt', $content);</code>
上記のコードでは、disk メソッドを使用して、使用するストレージを指定し、hadoop として指定します。次に、put メソッドを使用して、$content の内容をファイル システム上の file.txt ファイルに書き込みます。
概要
Laravelアプリケーション開発では、ファイルのアップロードとストレージは非常に一般的な要件です。 Laravel は、これらの操作を管理するための強力なファイル システムを提供します。また、独自のニーズに応じてデフォルトのファイル システムの保存場所を変更したり、特別なニーズを満たすカスタム ストレージ ドライバーを作成したりすることもできます。これらの機能により、アプリケーションの柔軟性と拡張性が大幅に向上します。
以上がlaravel デフォルトのストレージを変更するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。