PHPackages                             dahovitech/file-manager-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. dahovitech/file-manager-bundle

ActiveSymfony-bundle[File &amp; Storage](/categories/file-storage)

dahovitech/file-manager-bundle
==============================

Bundle Symfony moderne pour la gestion avancée de fichiers avec support multi-stockage, thumbnails, métadonnées et interface utilisateur intuitive

v1.1.0(9mo ago)014MITPHPPHP ^8.2

Since Jul 31Pushed 9mo agoCompare

[ Source](https://github.com/dahovitech/file-manager-bundle)[ Packagist](https://packagist.org/packages/dahovitech/file-manager-bundle)[ Docs](https://github.com/dahovitech/file-manager-bundle)[ RSS](/packages/dahovitech-file-manager-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (20)Versions (3)Used By (0)

📁 FileManagerBundle
===================

[](#-filemanagerbundle)

Version 1.0.0
-------------

[](#version-100)

[![PHP Version](https://camo.githubusercontent.com/c9f64f714c636ba27a3bba6dfd52f98426832db1262747efa54b212d16943651/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545382e322d626c7565)](https://php.net)[![Symfony Version](https://camo.githubusercontent.com/21f615d48547c3546d76690b4117c3a28c5d351c6166acc8ad7a16fe11de418c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73796d666f6e792d253545372e302d626c7565)](https://symfony.com)[![License: MIT](https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667)](https://opensource.org/licenses/MIT)

Un bundle Symfony moderne et performant pour la gestion avancée de fichiers avec support multi-stockage, interface utilisateur intuitive et fonctionnalités étendues.

✨ Fonctionnalités Principales
-----------------------------

[](#-fonctionnalités-principales)

### 🚀 Gestion Avancée des Fichiers

[](#-gestion-avancée-des-fichiers)

- **Upload multi-fichiers** avec support drag &amp; drop
- **Types de fichiers étendus** : Images, documents, vidéos, audio, PDFs
- **Validation stricte** avec vérification de signature
- **Upload par chunks** pour les gros fichiers
- **Versionnage automatique** des fichiers

### 🗂️ Organisation Intelligente

[](#️-organisation-intelligente)

- **Dossiers hiérarchiques** avec navigation intuitive
- **Recherche avancée** avec filtres multiples
- **Tags et descriptions** pour une meilleure organisation
- **Corbeille intégrée** avec restauration
- **Breadcrumb navigation** pour une navigation facile

### 🖼️ Gestion d'Images Avancée

[](#️-gestion-dimages-avancée)

- **Génération automatique de thumbnails** (multi-tailles)
- **Extraction de métadonnées EXIF** (géolocalisation, appareil photo, etc.)
- **Aperçu en modal** pour les images
- **Support WebP, AVIF** et formats modernes

### 🌐 Multi-Stockage

[](#-multi-stockage)

- **Stockage local** avec optimisations
- **AWS S3** avec support des régions multiples
- **Google Cloud Storage**
- **FTP/SFTP** pour les serveurs distants
- **Support CDN** avec URLs signées

### 🎨 Interface Utilisateur Moderne

[](#-interface-utilisateur-moderne)

- **Design responsive** adaptatif mobile/desktop
- **Vue grille et liste** commutables
- **Thème sombre/clair** automatique
- **Sans jQuery** - JavaScript vanilla moderne
- **Accessibility** conforme WCAG 2.1
- **Animations fluides** et feedback utilisateur

### 🔒 Sécurité Renforcée

[](#-sécurité-renforcée)

- **Validation multi-niveaux** des fichiers
- **Protection CSRF** intégrée
- **Rate limiting** configurable
- **Scan antivirus** optionnel (ClamAV)
- **Permissions granulaires** par utilisateur

### 📊 Analytics et Monitoring

[](#-analytics-et-monitoring)

- **Statistiques détaillées** de stockage
- **Logs structurés** pour audit
- **Métriques de performance**
- **Export CSV** des données
- **Dashboard de monitoring**

### 🛠️ Outils CLI

[](#️-outils-cli)

- **Nettoyage automatique** des fichiers orphelins
- **Synchronisation** base/stockage
- **Génération de rapports** détaillés
- **Maintenance** automatisée

### 🔌 API REST Complète

[](#-api-rest-complète)

- **Endpoints RESTful** pour intégration
- **Documentation OpenAPI** générée
- **Authentification JWT** optionnelle
- **Pagination avancée**
- **Filtrage et tri** flexibles

🏁 Installation Rapide
---------------------

[](#-installation-rapide)

### 1. Installation via Composer

[](#1-installation-via-composer)

```
composer require dahovitech/file-manager-bundle
```

### 2. Activation du Bundle

[](#2-activation-du-bundle)

Ajoutez le bundle dans `config/bundles.php` :

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

### 3. Configuration des Stockages

[](#3-configuration-des-stockages)

Créez `config/packages/flysystem.yaml` :

```
flysystem:
    storages:
        # Stockage local
        local.storage:
            adapter: 'local'
            options:
                directory: '%kernel.project_dir%/public/uploads'

        # AWS S3 (optionnel)
        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'
```

### 4. Configuration du Bundle

[](#4-configuration-du-bundle)

Créez `config/packages/file_manager.yaml` :

```
file_manager:
    # Taille maximale de fichier (50MB)
    max_file_size: 52428800

    # Types de fichiers autorisés
    allowed_mime_types:
        - 'image/jpeg'
        - 'image/png'
        - 'image/gif'
        - 'image/webp'
        - 'application/pdf'
        - 'text/plain'
        - 'video/mp4'
        - 'audio/mpeg'

    # Configuration des thumbnails
    thumbnails:
        enabled: true
        quality: 85
        sizes:
            small: { width: 150, height: 150 }
            medium: { width: 300, height: 300 }
            large: { width: 600, height: 600 }

    # Sécurité
    security:
        check_file_signature: true
        sanitize_filename: true
        forbidden_extensions: ['exe', 'bat', 'cmd']

    # Cache
    cache:
        enabled: true
        ttl: 3600

    # Interface utilisateur
    ui:
        theme: 'default'
        default_view: 'grid'
        enable_drag_drop: true
```

### 5. Migration de la Base de Données

[](#5-migration-de-la-base-de-données)

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

### 6. Installation des Assets

[](#6-installation-des-assets)

```
php bin/console assets:install
```

🎯 Utilisation
-------------

[](#-utilisation)

### Interface Web

[](#interface-web)

Accédez à `/file-manager` pour utiliser l'interface graphique complète.

### API REST

[](#api-rest)

```
// Upload de fichier
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('storage', 'local.storage');

fetch('/file-manager/upload', {
    method: 'POST',
    body: formData
})
.then(response => response.json())
.then(data => console.log(data));

// Liste des fichiers avec pagination
fetch('/file-manager/api/files?page=1&limit=20&search=photo')
.then(response => response.json())
.then(data => console.log(data));
```

### Intégration dans vos Contrôleurs

[](#intégration-dans-vos-contrôleurs)

```
use Dahovitech\FileManagerBundle\Service\FileManagerService;

class MyController extends AbstractController
{
    public function __construct(
        private FileManagerService $fileManager
    ) {}

    public function upload(Request $request): Response
    {
        $uploadedFile = $request->files->get('file');
        $folder = null; // ou récupérer un dossier existant

        $file = $this->fileManager->uploadFile(
            $uploadedFile,
            $folder,
            'local.storage'
        );

        return $this->json(['id' => $file->getId()]);
    }
}
```

🔧 Commandes CLI
---------------

[](#-commandes-cli)

### Nettoyage des Fichiers

[](#nettoyage-des-fichiers)

```
# Nettoyage complet avec simulation
php bin/console file-manager:cleanup --dry-run

# Suppression des fichiers orphelins
php bin/console file-manager:cleanup --orphans

# Suppression définitive des fichiers supprimés
php bin/console file-manager:cleanup --deleted --older-than=30
```

### Statistiques

[](#statistiques)

```
# Statistiques générales
php bin/console file-manager:stats

# Statistiques détaillées par type
php bin/console file-manager:stats --detailed --by-type

# Export CSV
php bin/console file-manager:stats --export=stats.csv
```

### Synchronisation

[](#synchronisation)

```
# Synchronisation complète
php bin/console file-manager:sync

# Régénération des thumbnails
php bin/console file-manager:sync --regenerate-thumbnails

# Mise à jour des métadonnées
php bin/console file-manager:sync --update-metadata
```

⚙️ Configuration Avancée
------------------------

[](#️-configuration-avancée)

### Événements Personnalisés

[](#événements-personnalisés)

```
use Dahovitech\FileManagerBundle\Event\FileUploadEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class FileManagerSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            FileUploadEvent::POST_UPLOAD => 'onFileUploaded',
        ];
    }

    public function onFileUploaded(FileUploadEvent $event): void
    {
        $file = $event->getFile();

        // Traitement personnalisé après upload
        if ($file->isImage()) {
            // Redimensionner, optimiser, etc.
        }
    }
}
```

### Configuration de Sécurité Avancée

[](#configuration-de-sécurité-avancée)

```
file_manager:
    security:
        scan_viruses: true  # Nécessite ClamAV
        check_file_signature: true
        forbidden_extensions: ['exe', 'bat', 'cmd', 'scr', 'vbs']

    rate_limiting:
        enabled: true
        max_uploads_per_minute: 10
```

### Personnalisation de l'Interface

[](#personnalisation-de-linterface)

```
file_manager:
    ui:
        theme: 'dark'  # ou 'light', 'auto'
        show_breadcrumb: true
        show_stats: true
        default_view: 'list'  # ou 'grid'
```

🧪 Tests
-------

[](#-tests)

Le bundle inclut une suite de tests complète :

```
# Tests unitaires
php vendor/bin/phpunit Tests/Unit

# Tests fonctionnels
php vendor/bin/phpunit Tests/Functional

# Tests d'intégration
php vendor/bin/phpunit Tests/Integration

# Couverture de code
php vendor/bin/phpunit --coverage-html coverage
```

📈 Performance
-------------

[](#-performance)

### Optimisations Incluses

[](#optimisations-incluses)

- **Cache intelligent** des métadonnées
- **Lazy loading** des thumbnails
- **Compression automatique** des images
- **CDN ready** avec URLs optimisées
- **Pagination efficace** avec index de base
- **Requêtes optimisées** avec eager loading

### Métriques de Performance

[](#métriques-de-performance)

- Upload de fichiers : **&lt; 2s** pour 50MB
- Génération de thumbnails : **&lt; 500ms** par image
- Recherche dans 10K+ fichiers : **&lt; 100ms**
- Interface responsive : **&lt; 300ms** LCP

🔍 Dépannage
-----------

[](#-dépannage)

### Problèmes Courants

[](#problèmes-courants)

**Upload échoue avec des gros fichiers :**

```
# php.ini
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
```

**Thumbnails non générés :**

```
# Vérifiez les extensions PHP
php -m | grep -E "(gd|imagick)"

# Permissions du dossier
chmod 755 public/uploads
```

**Erreurs de permissions :**

```
# Permissions appropriées
chown -R www-data:www-data public/uploads
chmod -R 755 public/uploads
```

🔄 Migration depuis l'Ancienne Version
-------------------------------------

[](#-migration-depuis-lancienne-version)

```
# Sauvegarde de la base
mysqldump -u user -p database > backup.sql

# Migration automatique
php bin/console file-manager:migrate:v2

# Vérification
php bin/console file-manager:sync --fix-missing
```

🤝 Contribution
--------------

[](#-contribution)

Les contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](CONTRIBUTING.md) pour les guidelines.

### Développement Local

[](#développement-local)

```
git clone https://github.com/dahovitech/file-manager-bundle.git
cd file-manager-bundle
composer install
npm install
npm run dev
```

📝 Changelog
-----------

[](#-changelog)

Consultez [CHANGELOG.md](CHANGELOG.md) pour l'historique des versions.

🆘 Support
---------

[](#-support)

- 📚 [Documentation complète](https://docs.dahovitech.com/file-manager-bundle)
- 🐛 [Signaler un bug](https://github.com/dahovitech/file-manager-bundle/issues)
- 💬 [Discussions](https://github.com/dahovitech/file-manager-bundle/discussions)
- 📧 [Support professionnel](mailto:support@dahovitech.com)

📜 Licence
---------

[](#-licence)

Ce projet est sous licence MIT. Voir [LICENSE](LICENSE) pour plus de détails.

🙏 Remerciements
---------------

[](#-remerciements)

- L'équipe Symfony pour l'excellent framework
- La communauté open source pour les retours et contributions
- Tous les contributeurs qui ont rendu ce projet possible

---

 Développé avec ❤️ par [Dahovitech](https://dahovi.com)

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance57

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

284d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9f4dae75390fa4a04152bcca61a691fe658a18c50e56005817d225e443f1d1aa?d=identicon)[jprud67](/maintainers/jprud67)

---

Top Contributors

[![jprud67](https://avatars.githubusercontent.com/u/19764576?v=4)](https://github.com/jprud67 "jprud67 (2 commits)")

---

Tags

ftpsymfonybundleFlysystemmetadatastorageuploadThumbnailsfile managerfile-uploaddrag-dropaws-s3google cloud

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dahovitech-file-manager-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/dahovitech-file-manager-bundle/health.svg)](https://phpackages.com/packages/dahovitech-file-manager-bundle)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

7310.3k29](/packages/open-dxp-opendxp)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
