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:
Collegati e accedi al tuo server web usando il client SSH (es. PUTTY).
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.)