v1.22.0 — Open Source · Licence MIT

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.

PHP ≥ 8.1
Aucun framework requis
~3 KB
Taille du SDK
MIT
Licence open source
16
Langues supportées
Aperçu

Voir en action

FluxFiles desktop file manager UI
FluxFiles mobile file manager UI
FluxFiles create folder modal
Fonctionnalités

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.

Installation rapide

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

Laravel WordPress React / Next.js Vue / Nuxt CKEditor 4 TinyMCE Any framework
Pourquoi FluxFiles

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