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:
Connectez-vous et connectez-vous à votre serveur Web à l'aide du client SSH (par exemple, PUTTY).
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.)