Sök…
Konfiguration
Filsystemets konfigurationsfil finns på config/filesystems.php
. Inom den här filen kan du konfigurera alla dina "diskar". Varje disk representerar en viss lagringsdrivrutin och lagringsplats. Exempel på konfigurationer för varje drivrutin som stöds ingår i konfigurationsfilen. Så ändra helt enkelt konfigurationen så att den speglar dina lagringspreferenser och referenser!
Innan du använder S3- eller Rackspace-drivrutinerna måste du installera rätt paket via Composer:
- Amazon S3:
league/flysystem-aws-s3-v2 ~1.0
- Rackspace:
league/flysystem-rackspace ~1.0
Naturligtvis kan du konfigurera så många skivor som du vill och kanske till och med ha flera skivor som använder samma drivrutin.
När du använder den lokala drivrutinen bör du notera att alla filoperationer är relativt den rotkatalog som definieras i din konfigurationsfil. Som standard är detta värde inställt på storage/app directory
. Följande metod lagrar därför en fil i storage/app/file.txt
:
Storage::disk('local')->put('file.txt', 'Contents');
Grundläggande användning
Storage
kan användas för att interagera med någon av dina konfigurerade skivor. Alternativt kan du skriva antydan om Illuminate\Contracts\Filesystem\Factory
kontrakt på valfri klass som löses via Laravel-servicebehållaren.
Hämtar en särskild disk
$disk = Storage::disk('s3');
$disk = Storage::disk('local');
Bestämma om en fil finns
$exists = Storage::disk('s3')->exists('file.jpg');
Anropsmetoder på standarddisken
if (Storage::exists('file.jpg'))
{
//
}
Hämta en fils innehåll
$contents = Storage::get('file.jpg');
Ställa in en fils innehåll
Storage::put('file.jpg', $contents);
Förbered dig på en fil
Storage::prepend('file.log', 'Prepended Text');
Lägg till en fil
Storage::append('file.log', 'Appended Text');
Radera en fil
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
Kopiera en fil till en ny plats
Storage::copy('old/file1.jpg', 'new/file1.jpg');
Flytta en fil till en ny plats
Storage::move('old/file1.jpg', 'new/file1.jpg');
Få filstorlek
$size = Storage::size('file1.jpg');
Få den senaste modifieringstiden (UNIX)
$time = Storage::lastModified('file1.jpg');
Hämta alla filer i en katalog
$files = Storage::files($directory);
// Recursive...
$files = Storage::allFiles($directory);
Få alla kataloger inom en katalog
$directories = Storage::directories($directory);
// Recursive...
$directories = Storage::allDirectories($directory);
Skapa en katalog
Storage::makeDirectory($directory);
Radera en katalog
Storage::deleteDirectory($directory);
Anpassade filsystem
Laravels integration av Flysystem tillhandahåller drivrutiner för flera "drivrutiner" ur lådan; Flysystem är dock inte begränsat till dessa och har adaptrar för många andra lagringssystem. Du kan skapa en anpassad drivrutin om du vill använda en av dessa extra adaptrar i din Laravel-applikation. Oroa dig inte, det är inte för svårt!
För att ställa in det anpassade filsystemet måste du skapa en tjänsteleverantör som DropboxFilesystemServiceProvider
. I leverantörens boot
kan du injicera en instans av Illuminate\Contracts\Filesystem\Factory
kontraktet och ringa extend
för den injicerade instansen. Alternativt kan du använda Disk
extend
.
Det första argumentet för extend
är förarens namn och det andra är en stängning som får variablerna $app
och $config
. Upplösaren Stängning måste returnera en instans av League\Flysystem\Filesystem
.
Obs: $ config-variabeln kommer redan att innehålla de värden som definierats i
config/filesystems.php
för den angivna disken. Dropbox-exempel
<?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()
{
//
}
}
Skapa symbolisk länk på en webbserver med SSH
I Laravel-dokumentationen bör en symbolisk länk (symlink eller mjuk länk) från public / lagring till lagring / app / public skapas för att göra filer tillgängliga från webben.
(DENNA FÖRFARANDEN SKAPAR SYMBOLISK LINK INOM LARAVEL PROJEKTDIREKTORI)
Här är stegen för hur du kan skapa symbolisk länk på din Linux-webbserver med SSH-klient:
Anslut och logga in på din webbserver med SSH-klient (t.ex. PUTTY).
Länka lagring / app / offentligt till offentligt / lagring med syntaxen
ln -s target_path link_path
Exempel (i CPanel File Directory)
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
(En mapp med namnet lagring skapas för att länka sökvägen till en indikator >>> på mappikonen.)