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:

  1. Maak verbinding en log in op uw webserver met behulp van de SSH-client (bijv. PUTTY).

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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow