Der Dateimanager, der überall eingebettet wird
PHP ≥ 8.1 + Flysystem 3. Alpine.js UI. Local, S3, Cloudflare R2. Einbetten mit wenigen Zeilen JavaScript.
In Aktion sehen
Alles, was ein moderner Dateimanager braucht
Gebaut für Entwickler, die Flexibilität brauchen.
Multi-Speicher
Lokal, AWS S3, Cloudflare R2 über Flysystem v3 — per Konfiguration wechseln, kein Code-Change.
Überall einbetten
iframe + postMessage SDK. Standalone-UI mit Alpine.js (ohne Build). Funktioniert mit jedem Framework.
JWT-Auth + Scoping
Pfad-Präfix pro Nutzer, Berechtigungen, Disk-Whitelist, Owner-only-Modus.
AI Auto-Tag
Claude / OpenAI Vision — automatisch Alt-Text, Titel, Tags.
Bildzuschnitt
Inline-Zuschnitt mit Seitenverhältnis-Vorlagen.
Bildoptimierung
Automatische WebP-Varianten — Thumb, Mittel, Groß.
Vorsignierte Uploads
Browser lädt direkt zu S3/R2 hoch — null Bandbreite auf Ihrem Server.
Chunk-Upload
S3 Multipart für Dateien > 10MB.
Volltextsuche
SQLite FTS5 in Namen, Titeln, Tags.
Massenoperationen
Mehrfachauswahl: Verschieben, Kopieren, Löschen, Herunterladen.
Cross-Disk-Transfer
Kopieren/Verschieben zwischen Lokal ↔ S3 ↔ R2.
Papierkorb
Wiederherstellbares Löschen mit automatischer Bereinigung.
SEO-Metadaten
Titel, Alt, Beschriftung, Tags — S3-Objektmetadaten (Cloud) oder Sidecar-JSON (lokal). Volltextsuche.
Dunkelmodus
Hell / dunkel / auto in UI und SDK.
16 Sprachen
Standard Englisch. Locale über SDK, URL (?locale=) oder FLUXFILES_LOCALE. RTL für Arabisch.
Audit-Protokoll
Alle Schreibaktionen werden protokolliert.
Ratenbegrenzung
Token Bucket pro Benutzer zum API-Schutz.
Speicherkontingent
Benutzerlimits über JWT-Claims.
BYOB-Buckets
Nutzer bringen eigenes S3/R2 — Zugangsdaten verschlüsselt im JWT (AES-256-GCM).
Duplikaterkennung
SHA-256-Match überspringt redundante Uploads außer bei erzwungenem Überschreiben.
SDK-Token-Refresh
onTokenRefresh bei 401 — zusammengefasster Refresh, Retry und updateToken() für proaktive Rotation.
In 2 Minuten einsatzbereit
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= Kompatibel mit
Gebaut für das, was andere vergessen haben
| Funktion | FluxFiles | elFinder | Laravel-FM | RichFilemanager | Responsive FM |
|---|---|---|---|---|---|
| S3 + R2 + Local | ✓ | ⚠ | ⚠ | ⚠ | ✗ |
| Jedes Framework einbetten | ✓ | ⚠ | ✗ | ⚠ | ✗ |
| JWT-Auth + Scoping | ✓ | ✗ | ✗ | ✗ | ✗ |
| SEO-Metadaten | ✓ | ✗ | ✗ | ✗ | ✗ |
| AI Auto-Tag | ✓ | ✗ | ✗ | ✗ | ✗ |
| Bildzuschnitt | ✓ | ✓ | ✗ | ✗ | ✗ |
| Chunk-Upload | ✓ | ✗ | ✗ | ✗ | ✗ |
| Volltextsuche | ✓ | ✗ | ✗ | ✗ | ✗ |
| Dunkelmodus | ✓ | ✗ | ⚠ | ✗ | ✗ |
| 16 Sprachen | ✓ | ✓ | ✗ | ✗ | ✗ |
| PHP ≥ 8.1 | ✓ | ✓ | ✗ | ✓ | ✓ |
| Aktiv gewartet | ✓ | ✓ | ⚠ | ✗ | ✗ |
| Moderne UI | ✓ | ✗ | ⚠ | ✗ | ✗ |