Recherche…


Configuration

Le fichier de configuration du système de fichiers se trouve dans config/filesystems.php . Dans ce fichier, vous pouvez configurer tous vos "disques". Chaque disque représente un pilote de stockage et un emplacement de stockage particuliers. Des exemples de configuration pour chaque pilote pris en charge sont inclus dans le fichier de configuration. Donc, modifiez simplement la configuration pour refléter vos préférences de stockage et vos informations d'identification!

Avant d'utiliser les pilotes S3 ou Rackspace, vous devrez installer le package approprié via Composer:

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

Bien entendu, vous pouvez configurer autant de disques que vous le souhaitez et même disposer de plusieurs disques utilisant le même pilote.

Lorsque vous utilisez le pilote local, notez que toutes les opérations sur les fichiers sont relatives au répertoire racine défini dans votre fichier de configuration. Par défaut, cette valeur est définie sur le storage/app directory . Par conséquent, la méthode suivante stockera un fichier dans storage/app/file.txt :

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

Utilisation de base

La façade de Storage peut être utilisée pour interagir avec l'un de vos disques configurés. Vous pouvez également indiquer le Illuminate\Contracts\Filesystem\Factory sur toute classe résolue via le conteneur de services Laravel.

Récupération d'un disque particulier

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

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

Déterminer si un fichier existe

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

Méthodes d'appel sur le disque par défaut

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

Récupération du contenu d'un fichier

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

Définition du contenu d'un fichier

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

Ajouter à un fichier

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

Ajouter à un fichier

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

Supprimer un fichier

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

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

Copier un fichier dans un nouvel emplacement

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

Déplacer un fichier vers un nouvel emplacement

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

Obtenir la taille du fichier

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

Obtenir l'heure de dernière modification (UNIX)

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

Obtenir tous les fichiers dans un répertoire

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

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

Obtenir tous les répertoires dans un répertoire

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

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

Créer un répertoire

Storage::makeDirectory($directory);

Supprimer un répertoire

Storage::deleteDirectory($directory);

Systèmes de fichiers personnalisés

L'intégration Flysystem de Laravel fournit des drivers pour plusieurs "drivers" prêts à l'emploi. Cependant, Flysystem ne se limite pas à ceux-ci et possède des adaptateurs pour de nombreux autres systèmes de stockage. Vous pouvez créer un pilote personnalisé si vous souhaitez utiliser l'un de ces adaptateurs supplémentaires dans votre application Laravel. Ne vous inquiétez pas, ce n'est pas trop difficile!

Pour configurer le système de fichiers personnalisé, vous devez créer un fournisseur de services tel que DropboxFilesystemServiceProvider . Dans la méthode de boot du fournisseur, vous pouvez injecter une instance du Illuminate\Contracts\Filesystem\Factory et appeler la méthode extend de l'instance injectée. Vous pouvez également utiliser la méthode extend la façade du Disk .

Le premier argument de la méthode extend est le nom du pilote et le second, une fermeture qui reçoit les variables $app et $config . Le résolveur Closure doit renvoyer une instance de League\Flysystem\Filesystem .

Remarque: La variable $ config contiendra déjà les valeurs définies dans config/filesystems.php pour le disque spécifié. Exemple de 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()
    {
        //
    }

}

Création d'un lien symbolique sur un serveur Web à l'aide de SSH

Dans la documentation de Laravel, un lien symbolique (lien symbolique ou lien logiciel) entre public / stockage et stockage / application / public doit être créé pour rendre les fichiers accessibles depuis le Web.

(CETTE PROCÉDURE CRÉERA UN LIEN SYMBOLIQUE AU SEIN DU RÉPERTOIRE DU PROJET LARAVEL)

Voici les étapes à suivre pour créer un lien symbolique sur votre serveur Web Linux à l'aide du client SSH:

  1. Connectez-vous et connectez-vous à votre serveur Web à l'aide du client SSH (par exemple, PUTTY).

  2. Lier le stockage / app / public à public / storage en utilisant la syntaxe

    ln -s target_path link_path

    Exemple (dans le répertoire de fichiers CPanel)

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

(Un dossier nommé storage sera créé pour lier le chemin avec un indicateur >>> sur l’icône du dossier.)



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow