dahovitech/file-manager-bundle

Un bundle Symfony pour gérer des fichiers avec support multi-stockage

dev-main 2025-05-26 17:56 UTC

This package is not auto-updated.

Last update: 2025-05-27 16:31:26 UTC


README

Un bundle Symfony pour gérer des fichiers avec support multi-stockage, incluant les systèmes de fichiers local, FTP, AWS S3, et Google Drive. Ce bundle offre une interface utilisateur intuitive avec des fonctionnalités comme l'upload par drag-and-drop, la gestion de dossiers, et l'intégration WYSIWYG.

Fonctionnalités

  • Upload de fichiers : Téléversez des fichiers (images JPEG/PNG, PDF) via un formulaire ou par drag-and-drop.
  • Gestion multi-stockage : Prend en charge les stockages local, FTP, AWS S3, et Google Drive.
  • Organisation par dossiers : Créez et gérez des dossiers hiérarchiques pour organiser vos fichiers.
  • Filtres : Filtrez les fichiers par type, dossier, stockage, ou nom.
  • Prévisualisation : Affichez des aperçus pour les images.
  • Intégration WYSIWYG : Sélectionnez des fichiers pour les insérer dans un éditeur (par exemple, TinyMCE).
  • Suppression sécurisée : Supprimez des fichiers avec confirmation.

Prérequis

  • PHP 8.2 ou supérieur
  • Symfony 7.0 ou supérieur
  • Composer
  • Une base de données compatible avec Doctrine (MySQL, PostgreSQL, etc.)
  • Accès aux stockages configurés (FTP, AWS S3, Google Drive)

Installation

1. Installer le bundle via Composer

Puisque le dépôt est public, installez le bundle directement :

composer require dahovitech/file-manager-bundle

2. Activer le bundle

Ajoutez le bundle à config/bundles.php :

return [
    // ...
    Dahovitech\FileManagerBundle\FileManagerBundle::class => ['all' => true],
];

3. Configurer Flysystem

Créez ou mettez à jour config/packages/flysystem.yaml pour configurer les stockages :

flysystem:
    storages:
        local.storage:
            adapter: 'local'
            options:
                directory: '%kernel.project_dir%/public/uploads'
        ftp.storage:
            adapter: 'ftp'
            options:
                host: '%env(FTP_HOST)%'
                username: '%env(FTP_USERNAME)%'
                password: '%env(FTP_PASSWORD)%'
                root: '/'
                passive: true
                ssl: false
                timeout: 30
        aws_s3.storage:
            adapter: 'awss3v3'
            options:
                client:
                    version: 'latest'
                    region: '%env(AWS_REGION)%'
                    credentials:
                        key: '%env(AWS_ACCESS_KEY_ID)%'
                        secret: '%env(AWS_SECRET_ACCESS_KEY)%'
                bucket: '%env(AWS_BUCKET)%'
                prefix: 'files'
        google_drive.storage:
            adapter: 'googlecloudstorage'
            options:
                client:
                    project_id: '%env(GOOGLE_PROJECT_ID)%'
                    key_file: '%env(GOOGLE_CREDENTIALS)%'
                bucket: '%env(GOOGLE_BUCKET)%'

4. Configurer les variables d'environnement

Ajoutez les variables nécessaires dans .env.local :

# Local storage
FILE_MANAGER_UPLOAD_DIR=%kernel.project_dir%/public/uploads

# FTP
FTP_HOST=ftp.example.com
FTP_USERNAME=your_username
FTP_PASSWORD=your_password

# AWS S3
AWS_ACCESS_KEY_ID=your_aws_key
AWS_SECRET_ACCESS_KEY=your_aws_secret
AWS_REGION=us-east-1
AWS_BUCKET=your_bucket_name

# Google Drive (via Google Cloud Storage)
GOOGLE_PROJECT_ID=your_project_id
GOOGLE_CREDENTIALS=/path/to/your/service-account-key.json
GOOGLE_BUCKET=your_google_bucket

5. Mettre à jour la base de données

Générez et exécutez les migrations pour créer les tables nécessaires :

php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate

6. Configurer les assets

Copiez le fichier CSS dans votre dossier public :

mkdir -p public/assets/css
cp vendor/dahovitech/file-manager-bundle/Resources/public/css/file-manager.css public/assets/css/

Assurez-vous que jQuery est inclus dans votre template de base (base.html.twig) :

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

7. Accéder à l'interface

Visitez l'URL /file-manager dans votre application Symfony pour utiliser le gestionnaire de fichiers.

Utilisation

  • Upload de fichiers : Glissez-déposez des fichiers dans la zone dédiée ou utilisez le formulaire d'upload.
  • Création de dossiers : Utilisez le formulaire en haut pour créer des dossiers, avec possibilité de sélectionner un dossier parent.
  • Filtrage : Appliquez des filtres pour afficher des fichiers spécifiques par type, dossier, stockage, ou nom.
  • Sélection pour WYSIWYG : Cliquez sur "Sélectionner" pour insérer une image dans un éditeur WYSIWYG.
  • Suppression : Cliquez sur "Supprimer" pour retirer un fichier après confirmation.

Dépendances

  • php: ^8.2
  • symfony/framework-bundle: ^7.0
  • oneup/flysystem-bundle: ^4.0
  • league/flysystem-aws-s3-v3: ^3.0
  • league/flysystem-ftp: ^3.0
  • league/flysystem-google-cloud-storage: ^3.0

Licence

Ce bundle est sous licence MIT.

Contribuer

Les contributions sont les bienvenues ! Veuillez ouvrir une issue ou soumettre une pull request sur GitHub.

Support

Pour toute question ou problème, ouvrez une issue sur le dépôt GitHub.