ホームページ >PHPフレームワーク >Laravel >laravel デフォルトのストレージを変更する

laravel デフォルトのストレージを変更する

PHPz
PHPzオリジナル
2023-04-23 09:18:44216ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。