Heim  >  Artikel  >  PHP-Framework  >  Laravel ändert den Standardspeicher

Laravel ändert den Standardspeicher

PHPz
PHPzOriginal
2023-04-23 09:18:44123Durchsuche

Bei der Entwicklung von Laravel-Anwendungen ist das Hochladen von Dateien ein sehr häufiger Vorgang. Laravel bietet eine sehr bequeme Möglichkeit, diese hochgeladenen Dateien zu verwalten, nämlich das Dateisystem. Das Dateisystem ist eigentlich die Standardspeichermethode von Laravel und speichert hochgeladene Dateien an einem angegebenen Ort auf der Festplatte.

In einigen Fällen müssen wir die hochgeladenen Dateien jedoch möglicherweise an anderen Orten speichern, z. B. im Cloud-Speicher, im CDN oder bei anderen Remote-Speicherdiensten. Zu diesem Zeitpunkt müssen wir die Standardspeichermethode von Laravel ändern, damit sie sich an unsere Bedürfnisse anpassen kann.

In diesem Artikel erfahren Sie, wie Sie den Standardspeicher in Laravel ändern, um ihn an verschiedene Szenarien anzupassen.

1. Laravel-Dateisystem

In Laravel wird das Dateisystem zum Verwalten von Dateien und Verzeichnissen verwendet. Das Dateisystem von Laravel umfasst einige grundlegende Vorgänge, z. B. das Erstellen von Dateien, das Lesen von Dateien, das Aktualisieren von Dateien und das Löschen von Dateien.

Das Dateisystem von Laravel kann mehrere Festplatten zur Speicherung verwenden, einschließlich lokaler Festplatten, Cloud-Speicher wie S3, FTP-Speicher usw.

Wir können das Dateisystem von Laravel in der Konfigurationsdatei config/filesystems.php konfigurieren:

<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>

Im obigen Code können wir sehen, dass hier drei Arten von Festplatten konfiguriert sind: lokale Festplatte (lokal), öffentliche Festplatte (öffentlich) und S3-Cloud-Speicher (s3).

2. Ändern Sie den Standardspeicher

In Laravel können wir die Storage-Klasse verwenden, um das Dateisystem zu verwalten. Standardmäßig verwendet Laravel die lokale Festplatte als Standardspeicherort für das Dateisystem. Diese Standardfestplatte ist in config/filesystems.php definiert und der Standardwert ist lokal.

Wir können das Standardkonfigurationselement von config/filesystems.php ändern, um den Standardspeicher zu ändern:

<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>

Im obigen Code ändern wir den Wert von default von local in env('FILESYSTEM_DRIVER', 'local'). Hier wird die Funktion env verwendet, die es uns ermöglicht, die Umgebungsvariable FILESYSTEM_DRIVER in der .env-Datei zu definieren, um den Standardspeicher zu ändern.

Wenn Sie beispielsweise FILESYSTEM_DRIVER=s3 in der .env-Datei definieren, verwendet Laravel bei Verwendung des Storage-Dateisystems die s3-Festplatte als Standardspeicherort für das Dateisystem.

3. Benutzerdefinierten Speicher verwenden

Zusätzlich zur Änderung des Standardspeichers können wir auch einen benutzerdefinierten Speicher konfigurieren, um unseren speziellen Anforderungen gerecht zu werden.

Zuerst müssen wir einen neuen Speichertreiber erstellen. Erstellen Sie im App-Verzeichnis ein neues Verzeichnis mit dem Namen „Storage“ und erstellen Sie dann eine neue Klasse in diesem Verzeichnis.

Wenn wir beispielsweise einen Speichertreiber namens Hadoop erstellen möchten, können wir eine Klasse namens HadoopDriver erstellen:

<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>

Im obigen Code definieren wir eine HadoopDriverServiceProvider-Klasse und registrieren in der Boot-Methode einen Namen „Neuer Speicher“. Treiber für Hadoop.

Dann definieren wir eine HadoopFileSystemAdapter-Klasse, die alle Methoden der FilesystemAdapter-Schnittstelle implementiert. Diese Methoden werden aufgerufen, wenn wir das Storage-Dateisystem verwenden, um verschiedene Vorgänge im Dateisystem auszuführen, z. B. Dateien erstellen, Dateien lesen, Dateien aktualisieren, Dateien löschen usw.

Abschließend müssen wir die oben erstellte HadoopDriverServiceProvider-Klasse in der Laravel-Anwendung registrieren. Dies kann durch Hinzufügen der HadoopDriverServiceProvider-Klasse im Provider-Array der Datei config/app.php erfolgen:

<code class="php"><?php

return [

    // 省略其它代码

    'providers' => [

        // 省略其它服务提供者

        /*
         * 注册 Hadoop 存储驱动
         */
        \App\Storage\HadoopDriverServiceProvider::class,

    ],

];</code>

4 Verwendung von benutzerdefiniertem Speicher

Die Verwendung von benutzerdefiniertem Speicher erfordert den Aufruf der Speichermethode und die Angabe des Speicherpfads. Wenn wir beispielsweise einen benutzerdefinierten Speicher namens Hadoop verwenden möchten, können wir ihn wie folgt verwenden:

<code class="php">use Illuminate\Support\Facades\Storage;

Storage::disk('hadoop')->put('file.txt', $content);</code>

Im obigen Code verwenden wir die Disk-Methode, um den zu verwendenden Speicher anzugeben, und geben ihn als Hadoop an. Anschließend verwenden wir die Methode put, um den Inhalt von $content in die Datei file.txt im Dateisystem zu schreiben.

Zusammenfassung

Bei der Entwicklung von Laravel-Anwendungen sind das Hochladen und Speichern von Dateien sehr häufige Anforderungen. Laravel bietet ein leistungsstarkes Dateisystem zur Verwaltung dieser Vorgänge und ermöglicht es uns außerdem, den Standardspeicherort des Dateisystems entsprechend unseren eigenen Anforderungen zu ändern und sogar benutzerdefinierte Speichertreiber zu erstellen, um spezielle Anforderungen zu erfüllen. Diese Funktionen erhöhen die Flexibilität und Skalierbarkeit der Anwendung erheblich.

Das obige ist der detaillierte Inhalt vonLaravel ändert den Standardspeicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn