Ricerca…


Configurazione

Il file di configurazione del filesystem si trova in config/filesystems.php . All'interno di questo file puoi configurare tutti i tuoi "dischi". Ogni disco rappresenta un particolare driver di archiviazione e posizione di archiviazione. Configurazioni di esempio per ciascun driver supportato sono incluse nel file di configurazione. Quindi, modifica semplicemente la configurazione per riflettere le tue preferenze e credenziali di archiviazione!

Prima di utilizzare i driver S3 o Rackspace, è necessario installare il pacchetto appropriato tramite Composer:

  • Amazon S3: league/flysystem-aws-s3-v2 ~1.0
  • Rackspace: league/flysystem-rackspace ~1.0

Naturalmente, è possibile configurare quanti dischi si desidera e possono anche avere più dischi che utilizzano lo stesso driver.

Quando si utilizza il driver locale, si noti che tutte le operazioni sui file sono relative alla directory root definita nel file di configurazione. Per impostazione predefinita, questo valore è impostato sulla storage/app directory . Pertanto, il seguente metodo memorizzerebbe un file in storage/app/file.txt :

Storage::disk('local')->put('file.txt', 'Contents');

Uso di base

La facciata di Storage può essere utilizzata per interagire con qualsiasi disco configurato. In alternativa, è possibile digitare -intensificare il Illuminate\Contracts\Filesystem\Factory su qualsiasi classe che viene risolta tramite il contenitore del servizio Laravel.

Recupero di un disco particolare

$disk = Storage::disk('s3');

$disk = Storage::disk('local');

Determinare se esiste un file

$exists = Storage::disk('s3')->exists('file.jpg');

Metodi di chiamata sul disco predefinito

if (Storage::exists('file.jpg'))
{
    //
}

Recupero del contenuto di un file

$contents = Storage::get('file.jpg');

Impostazione del contenuto di un file

Storage::put('file.jpg', $contents);

Prepend to A File

Storage::prepend('file.log', 'Prepended Text');

Aggiungi a un file

Storage::append('file.log', 'Appended Text');

Elimina un file

Storage::delete('file.jpg');

Storage::delete(['file1.jpg', 'file2.jpg']);

Copia un file in una nuova posizione

Storage::copy('old/file1.jpg', 'new/file1.jpg');

Sposta un file in una nuova posizione

Storage::move('old/file1.jpg', 'new/file1.jpg');

Ottieni dimensioni file

$size = Storage::size('file1.jpg');

Ottieni l'ultimo tempo di modifica (UNIX)

$time = Storage::lastModified('file1.jpg');

Ottieni tutti i file in una directory

$files = Storage::files($directory);

// Recursive...
$files = Storage::allFiles($directory);

Ottieni tutte le directory in una directory

$directories = Storage::directories($directory);

// Recursive...
$directories = Storage::allDirectories($directory);

Crea una directory

Storage::makeDirectory($directory);

Elimina una directory

Storage::deleteDirectory($directory);

File system personalizzati

L'integrazione di Laravel Flysystem fornisce driver per diversi "driver" pronti all'uso; tuttavia, Flysystem non è limitato a questi e ha adattatori per molti altri sistemi di archiviazione. È possibile creare un driver personalizzato se si desidera utilizzare uno di questi adattatori aggiuntivi nell'applicazione Laravel. Non preoccuparti, non è troppo difficile!

Per configurare il filesystem personalizzato è necessario creare un fornitore di servizi come DropboxFilesystemServiceProvider . Nel metodo di boot del provider, è possibile iniettare un'istanza del Illuminate\Contracts\Filesystem\Factory e chiamare il metodo di extend dell'istanza iniettata. In alternativa, è possibile utilizzare il metodo di extend della facciata del Disk .

Il primo argomento del metodo extend è il nome del driver e il secondo è una chiusura che riceve le variabili $app e $config . La chiusura del resolver deve restituire un'istanza di League\Flysystem\Filesystem .

Nota: la variabile $ config conterrà già i valori definiti in config/filesystems.php per il disco specificato. Esempio di Dropbox

<?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()
    {
        //
    }

}

Creazione di collegamenti simbolici in un server Web tramite SSH

Nella documentazione di Laravel, un collegamento simbolico (link simbolico o soft link) da pubblico / storage a storage / app / public dovrebbe essere creato per rendere i file accessibili dal web.

(QUESTA PROCEDURA CREERÀ IL LINK SIMBOLICO NELL'ELENCO DEL PROGETTO LARAVEL)

Ecco i passaggi su come creare un collegamento simbolico nel tuo server web Linux usando il client SSH:

  1. Collegati e accedi al tuo server web usando il client SSH (es. PUTTY).

  2. Collega memoria / app / pubblico a pubblico / archiviazione usando la sintassi

    ln -s target_path link_path

    Esempio (nella directory dei file di CPanel)

    ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage

(Verrà creata una cartella denominata memoria per collegare il percorso con un indicatore >>> sull'icona della cartella.)



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow