Le gestionnaire de fichiers intégrable partout
PHP ≥ 8.1 + Flysystem 3. UI Alpine.js. Local, S3, Cloudflare R2. Intégrez en quelques lignes de JavaScript.
Voir en action
Tout ce dont un gestionnaire de fichiers moderne a besoin
Conçu pour les développeurs qui ont besoin de flexibilité.
Multi-stockage
Local, AWS S3, Cloudflare R2 via Flysystem v3 — changez par la config, sans modifier le code.
Intégration partout
iframe + SDK postMessage. L'UI autonome utilise Alpine.js (zéro build). Compatible avec tout framework.
Auth JWT + portée
Préfixe de chemin par utilisateur, permissions, liste blanche de disques, mode owner-only.
AI auto-tag
Claude / OpenAI vision — alt texte, titre, tags automatiques.
Recadrage d'image
Outil de recadrage avec ratios prédéfinis.
Optimisation d'image
Variantes WebP automatiques — miniature, moyen, grand.
Uploads présignés
Le navigateur uploade directement vers S3/R2 — zéro bande passante serveur.
Upload par morceaux
S3 multipart pour fichiers > 10Mo.
Recherche plein texte
SQLite FTS5 dans les noms, titres, tags.
Opérations en masse
Sélection multiple : déplacer, copier, supprimer, télécharger.
Transfert cross-disk
Copier/déplacer entre Local ↔ S3 ↔ R2.
Corbeille
Suppression réversible avec purge automatique.
Métadonnées SEO
Titre, alt, légende, tags — métadonnées objet S3 (cloud) ou JSON sidecar (local). Recherche plein texte.
Mode sombre
Clair / sombre / auto dans l'UI et le SDK.
16 langues
Anglais par défaut. Définissez la locale via SDK, URL (?locale=) ou FLUXFILES_LOCALE. RTL pour l'arabe.
Journal d'audit
Toutes les actions d'écriture enregistrées.
Limitation de débit
Token bucket par utilisateur pour la protection API.
Quota de stockage
Limites par utilisateur via JWT claims.
Buckets BYOB
Les utilisateurs apportent leur S3/R2 — identifiants chiffrés dans le JWT (AES-256-GCM).
Détection des doublons
Correspondance SHA-256 — ignore les uploads redondants sauf écrasement forcé.
Rafraîchissement du token SDK
onTokenRefresh sur 401 — refresh fusionné, retry, et updateToken() pour rotation proactive.
Opérationnel en 2 minutes
composer require fluxfiles/fluxfiles
cp .env.example .env
# .env
FLUXFILES_SECRET=your-random-32-char-secret
FLUXFILES_ALLOWED_ORIGINS=https://yourapp.com
require_once 'vendor/autoload.php';
$token = fluxfiles_token(
userId: 'user-123',
perms: ['read', 'write', 'delete'],
disks: ['local', 's3', 'r2'],
prefix: 'user-123/',
maxUploadMb: 10,
allowedExt: null,
ttl: 3600
); composer require fluxfiles/laravel
php artisan vendor:publish --tag=fluxfiles-config
# .env — point the adapter at your FluxFiles server
FLUXFILES_ENDPOINT=https://fm.yourdomain.com
FLUXFILES_SECRET=your-secret-min-32-chars
# Optional: match CORS on the FluxFiles host
# FLUXFILES_ALLOWED_ORIGINS=https://yourapp.com
# Config: config/fluxfiles.php <!-- Demo: unpkg. In production, serve fluxfiles.js from your FluxFiles host -->
<script src="https://unpkg.com/fluxfiles@1.22.0/fluxfiles.js"></script>
<script>
FluxFiles.open({
endpoint: 'https://your-api.com',
token: 'eyJhbGci...',
disk: 'local',
mode: 'picker',
container: '#file-picker',
onSelect: function(file) {
console.log('Selected:', file.url);
},
async onTokenRefresh() {
const r = await fetch('/api/auth/refresh-fluxfiles-token');
const { token } = await r.json();
return token;
}
});
</script> npm install @fluxfiles/react
import { FluxFilesModal } from '@fluxfiles/react';
<FluxFilesModal
open={open}
endpoint="https://your-api.com"
token={token}
onSelect={(file) => console.log(file)}
onClose={() => setOpen(false)}
/> npm install @fluxfiles/vue
<script setup>
import { FluxFilesModal } from '@fluxfiles/vue';
</script>
<FluxFilesModal
v-model:open="open"
endpoint="https://your-api.com"
:token="token"
@select="onSelect"
@close="open = false"
/> git clone https://github.com/thai-pc/fluxfiles.git
cd fluxfiles
composer install -d packages/core
cp .env.example .env
cd packages/core
php -S localhost:8080 router.php
# UI: http://localhost:8080/public/index.html
# API: http://localhost:8080/api/fm/list?disk=local&path= Compatible avec
Conçu pour ce que les autres ont oublié
| Fonctionnalité | FluxFiles | elFinder | Laravel-FM | RichFilemanager | Responsive FM |
|---|---|---|---|---|---|
| S3 + R2 + Local | ✓ | ⚠ | ⚠ | ⚠ | ✗ |
| Intégration tout framework | ✓ | ⚠ | ✗ | ⚠ | ✗ |
| Auth JWT + portée | ✓ | ✗ | ✗ | ✗ | ✗ |
| Métadonnées SEO | ✓ | ✗ | ✗ | ✗ | ✗ |
| AI auto-tag | ✓ | ✗ | ✗ | ✗ | ✗ |
| Recadrage d'image | ✓ | ✓ | ✗ | ✗ | ✗ |
| Upload par morceaux | ✓ | ✗ | ✗ | ✗ | ✗ |
| Recherche plein texte | ✓ | ✗ | ✗ | ✗ | ✗ |
| Mode sombre | ✓ | ✗ | ⚠ | ✗ | ✗ |
| 16 langues | ✓ | ✓ | ✗ | ✗ | ✗ |
| PHP ≥ 8.1 | ✓ | ✓ | ✗ | ✓ | ✓ |
| Maintenance active | ✓ | ✓ | ⚠ | ✗ | ✗ |
| UI moderne | ✓ | ✗ | ⚠ | ✗ | ✗ |