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:

  1. Anslut och logga in på din webbserver med SSH-klient (t.ex. PUTTY).

  2. 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.)



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow