Suche…


Aufbau

Die Dateisystem-Konfigurationsdatei befindet sich unter config/filesystems.php . In dieser Datei können Sie alle "Festplatten" konfigurieren. Jede Festplatte steht für einen bestimmten Speichertreiber und Speicherort. Beispielkonfigurationen für jeden unterstützten Treiber sind in der Konfigurationsdatei enthalten. Ändern Sie einfach die Konfiguration entsprechend Ihren Speichereinstellungen und Anmeldeinformationen!

Bevor Sie die S3- oder Rackspace-Treiber verwenden, müssen Sie das entsprechende Paket über Composer installieren:

  • Amazon S3: league/flysystem-aws-s3-v2 ~1.0
  • Rackspace: league/flysystem-rackspace ~1.0

Natürlich können Sie beliebig viele Festplatten konfigurieren und haben sogar mehrere Festplatten, die denselben Treiber verwenden.

Beachten Sie bei der Verwendung des lokalen Treibers, dass alle Dateioperationen relativ zu dem in Ihrer Konfigurationsdatei definierten Stammverzeichnis sind. Standardmäßig ist dieser Wert auf das storage/app directory . Daher würde die folgende Methode eine Datei in storage/app/file.txt speichern:

Storage::disk('local')->put('file.txt', 'Contents');

Grundlegende Verwendung

Die Storage kann für die Interaktion mit einer der konfigurierten Festplatten verwendet werden. Alternativ können Sie auch den Illuminate\Contracts\Filesystem\Factory Vertrag für jede Klasse eingeben, die über den Laravel-Service-Container aufgelöst wird.

Eine bestimmte Festplatte abrufen

$disk = Storage::disk('s3');

$disk = Storage::disk('local');

Bestimmen, ob eine Datei vorhanden ist

$exists = Storage::disk('s3')->exists('file.jpg');

Aufrufen von Methoden auf der Standardfestplatte

if (Storage::exists('file.jpg'))
{
    //
}

Inhalt einer Datei abrufen

$contents = Storage::get('file.jpg');

Inhalt einer Datei einstellen

Storage::put('file.jpg', $contents);

Vorbereiten einer Datei

Storage::prepend('file.log', 'Prepended Text');

An eine Datei anhängen

Storage::append('file.log', 'Appended Text');

Eine Datei löschen

Storage::delete('file.jpg');

Storage::delete(['file1.jpg', 'file2.jpg']);

Kopieren Sie eine Datei an einen neuen Speicherort

Storage::copy('old/file1.jpg', 'new/file1.jpg');

Verschieben Sie eine Datei an einen neuen Speicherort

Storage::move('old/file1.jpg', 'new/file1.jpg');

Dateigröße erhalten

$size = Storage::size('file1.jpg');

Letzte Änderungszeit (UNIX)

$time = Storage::lastModified('file1.jpg');

Holen Sie sich alle Dateien in einem Verzeichnis

$files = Storage::files($directory);

// Recursive...
$files = Storage::allFiles($directory);

Holen Sie sich alle Verzeichnisse in einem Verzeichnis

$directories = Storage::directories($directory);

// Recursive...
$directories = Storage::allDirectories($directory);

Erstellen Sie ein Verzeichnis

Storage::makeDirectory($directory);

Ein Verzeichnis löschen

Storage::deleteDirectory($directory);

Benutzerdefinierte Dateisysteme

Die Flysystem-Integration von Laravel bietet Treiber für mehrere "Treiber", die sofort einsatzbereit sind. Flysystem ist jedoch nicht darauf beschränkt und verfügt über Adapter für viele andere Speichersysteme. Sie können einen benutzerdefinierten Treiber erstellen, wenn Sie einen dieser zusätzlichen Adapter in Ihrer Laravel-Anwendung verwenden möchten. Keine Sorge, es ist nicht zu schwer!

Um das benutzerdefinierte Dateisystem einzurichten, müssen Sie einen Dienstanbieter wie DropboxFilesystemServiceProvider . In der boot Methode des Providers können Sie eine Instanz des Illuminate\Contracts\Filesystem\Factory einfügen und die extend der injizierten Instanz aufrufen. Alternativ können Sie die extend der Disk Fassade verwenden.

Das erste Argument der extend Methode ist der Name des Treibers und das zweite Argument ist ein Closure, der die Variablen $app und $config empfängt. Der Resolver-Abschluss muss eine Instanz von League\Flysystem\Filesystem .

Hinweis: Die $ config-Variable enthält bereits die Werte, die in config/filesystems.php für den angegebenen Datenträger definiert sind. Dropbox-Beispiel

<?php namespace App\Providers;

use Storage;
use League\Flysystem\Filesystem;
use Dropbox\Client as DropboxClient;
use League\Flysystem\Dropbox\DropboxAdapter;
use Illuminate\Support\ServiceProvider;

class DropboxFilesystemServiceProvider extends ServiceProvider {

    public function boot()
    {
        Storage::extend('dropbox', function($app, $config)
        {
            $client = new DropboxClient($config['accessToken'], $config['clientIdentifier']);

            return new Filesystem(new DropboxAdapter($client));
        });
    }

    public function register()
    {
        //
    }

}

In der Laravel-Dokumentation sollte ein symbolischer Link (Symlink oder Softlink) von public / storage nach storage / app / public erstellt werden, um Dateien aus dem Web zugänglich zu machen.

(DIESES VERFAHREN WIRD SYMBOLISCHE VERBINDUNG IM LARAVEL-PROJEKTVERZEICHNIS ERSTELLEN.)

Gehen Sie wie folgt vor, um auf Ihrem Linux-Webserver mithilfe des SSH-Clients einen symbolischen Link zu erstellen:

  1. Verbinden Sie sich über einen SSH-Client (z. B. PUTTY) mit Ihrem Webserver.

  2. Verknüpfen Sie Storage / App / public mit public / storage mithilfe der Syntax

    ln -s target_path link_path

    Beispiel (im CPanel-Dateiverzeichnis)

    ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage

(Ein Ordner mit dem Namen " Speicher" wird erstellt, um den Pfad mit einem Indikator >>> auf dem Ordnersymbol zu verknüpfen.)



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow