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()
{
//
}
}
Erstellen eines symbolischen Links in einem Webserver mit SSH
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:
Verbinden Sie sich über einen SSH-Client (z. B. PUTTY) mit Ihrem Webserver.
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.)