Zoeken…
Configuratie
Het bestandssysteemconfiguratiebestand bevindt zich op config/filesystems.php
. Binnen dit bestand kunt u al uw "schijven" configureren. Elke schijf vertegenwoordigt een bepaald opslagstuurprogramma en opslaglocatie. Voorbeeldconfiguraties voor elk ondersteund stuurprogramma zijn opgenomen in het configuratiebestand. Wijzig dus eenvoudig de configuratie om uw opslagvoorkeuren en referenties weer te geven!
Voordat u de S3- of Rackspace-stuurprogramma's gebruikt, moet u het juiste pakket installeren via Composer:
- Amazon S3:
league/flysystem-aws-s3-v2 ~1.0
- Rackspace:
league/flysystem-rackspace ~1.0
Natuurlijk kunt u zoveel schijven configureren als u wilt en misschien zelfs meerdere schijven hebben die hetzelfde stuurprogramma gebruiken.
Wanneer u het lokale stuurprogramma gebruikt, moet u er rekening mee houden dat alle bestandsbewerkingen relatief zijn aan de hoofdmap die in uw configuratiebestand is gedefinieerd. Standaard is deze waarde ingesteld op de storage/app directory
. Daarom zou de volgende methode een bestand opslaan in storage/app/file.txt
:
Storage::disk('local')->put('file.txt', 'Contents');
Basisgebruik
De Storage
kan worden gebruikt om te communiceren met elk van uw geconfigureerde schijven. Als alternatief kunt u het Illuminate\Contracts\Filesystem\Factory
typen op elke klasse die wordt opgelost via de Laravel-servicecontainer.
Een bepaalde schijf ophalen
$disk = Storage::disk('s3');
$disk = Storage::disk('local');
Bepalen of een bestand bestaat
$exists = Storage::disk('s3')->exists('file.jpg');
Oproepmethoden op de standaardschijf
if (Storage::exists('file.jpg'))
{
//
}
De inhoud van een bestand ophalen
$contents = Storage::get('file.jpg');
De inhoud van een bestand instellen
Storage::put('file.jpg', $contents);
Voorafgaand aan een bestand
Storage::prepend('file.log', 'Prepended Text');
Toevoegen aan een bestand
Storage::append('file.log', 'Appended Text');
Verwijder een bestand
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
Kopieer een bestand naar een nieuwe locatie
Storage::copy('old/file1.jpg', 'new/file1.jpg');
Verplaats een bestand naar een nieuwe locatie
Storage::move('old/file1.jpg', 'new/file1.jpg');
Bestandsgrootte ophalen
$size = Storage::size('file1.jpg');
Download de laatste wijzigingstijd (UNIX)
$time = Storage::lastModified('file1.jpg');
Alle bestanden binnen een map ophalen
$files = Storage::files($directory);
// Recursive...
$files = Storage::allFiles($directory);
Krijg alle mappen binnen een map
$directories = Storage::directories($directory);
// Recursive...
$directories = Storage::allDirectories($directory);
Maak een map aan
Storage::makeDirectory($directory);
Een map verwijderen
Storage::deleteDirectory($directory);
Aangepaste bestandssystemen
De Flysystem-integratie van Laravel biedt stuurprogramma's voor verschillende "stuurprogramma's" uit de doos; Flysystem is echter niet beperkt tot deze en heeft adapters voor vele andere opslagsystemen. U kunt een aangepast stuurprogramma maken als u een van deze extra adapters in uw Laravel-toepassing wilt gebruiken. Maak je geen zorgen, het is niet zo moeilijk!
Om het aangepaste bestandssysteem in te stellen, moet u een serviceprovider maken zoals DropboxFilesystemServiceProvider
. In de boot
de provider kunt u een instantie van het Illuminate\Contracts\Filesystem\Factory
injecteren en de extend
van de geïnjecteerde instantie aanroepen. Als alternatief kunt u het gebruiken Disk
gevel's extend
methode.
Het eerste argument van de extend
is de naam van het stuurprogramma en het tweede is een Closure die de variabelen $app
en $config
ontvangt. De resolver Closure moet een exemplaar van League\Flysystem\Filesystem
.
Opmerking: de variabele $ config bevat al de waarden die zijn gedefinieerd in
config/filesystems.php
voor de opgegeven schijf. Dropbox-voorbeeld
<?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()
{
//
}
}
Symbolische koppeling maken in een webserver met SSH
In Laravel-documentatie moet een symbolische link (symlink of softlink) van public / storage naar storage / app / public worden gemaakt om bestanden toegankelijk te maken via internet.
(DEZE PROCEDURE MAAKT SYMBOLISCHE LINK BINNEN DE LARAVEL-PROJECTRICHTLIJN)
Hier zijn de stappen voor het maken van een symbolische link in uw Linux-webserver met behulp van de SSH-client:
Maak verbinding en log in op uw webserver met behulp van de SSH-client (bijv. PUTTY).
Koppel opslag / app / openbaar aan openbaar / opslag met behulp van de syntaxis
ln -s target_path link_path
Voorbeeld (in CPanel-bestandsmap)
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
(Er wordt een map met de naam opslag gemaakt om het pad te koppelen met een indicator >>> op het mappictogram.)