El gestor de archivos que se incrusta en cualquier lugar
PHP ≥ 8.1 + Flysystem 3. UI Alpine.js. Local, S3, Cloudflare R2. Incrusta con pocas líneas de JavaScript.
Ver en acción
Todo lo que un gestor de archivos moderno necesita
Construido para desarrolladores que necesitan flexibilidad.
Multi-almacenamiento
Local, AWS S3, Cloudflare R2 vía Flysystem v3 — cambia con config, sin tocar código.
Incrusta en cualquier lugar
iframe + SDK postMessage. La UI standalone usa Alpine.js (sin build). Funciona con cualquier framework.
Auth JWT + alcance
Prefijo de ruta por usuario, permisos, lista blanca de discos, modo solo propietario.
AI auto-tag
Claude / OpenAI vision — alt text, título, tags automáticos.
Recorte de imagen
Herramienta de recorte con proporciones predefinidas.
Optimización de imagen
Variantes WebP automáticas — miniatura, mediano, grande.
Subidas presignadas
El navegador sube directamente a S3/R2 — cero ancho de banda en tu servidor.
Subida por partes
S3 multipart para archivos > 10MB.
Búsqueda de texto completo
SQLite FTS5 en nombres, títulos, tags.
Operaciones masivas
Selección múltiple: mover, copiar, eliminar, descargar.
Transferencia cross-disk
Copiar/mover entre Local ↔ S3 ↔ R2.
Papelera
Eliminación recuperable con purga automática.
Metadatos SEO
Título, alt, leyenda, tags — metadatos de objeto S3 (nube) o JSON sidecar (local). Búsqueda de texto completo.
Modo oscuro
Claro / oscuro / auto en UI y SDK.
16 idiomas
Inglés por defecto. Establece locale vía SDK, URL (?locale=) o FLUXFILES_LOCALE. RTL para árabe.
Registro de auditoría
Todas las acciones de escritura registradas.
Limitación de velocidad
Token bucket por usuario para protección API.
Cuota de almacenamiento
Límites por usuario vía JWT claims.
Buckets BYOB
Los usuarios traen su propio S3/R2 — credenciales cifradas en JWT (AES-256-GCM).
Detección de duplicados
Coincidencia SHA-256 omite cargas redundantes salvo sobrescritura forzada.
Renovación de token SDK
onTokenRefresh en 401 — refresh coalescido, reintento y updateToken() para rotación proactiva.
Funcionando en 2 minutos
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 con
Construido para lo que otros olvidaron
| Característica | FluxFiles | elFinder | Laravel-FM | RichFilemanager | Responsive FM |
|---|---|---|---|---|---|
| S3 + R2 + Local | ✓ | ⚠ | ⚠ | ⚠ | ✗ |
| Incrustar en cualquier framework | ✓ | ⚠ | ✗ | ⚠ | ✗ |
| Auth JWT + alcance | ✓ | ✗ | ✗ | ✗ | ✗ |
| Metadatos SEO | ✓ | ✗ | ✗ | ✗ | ✗ |
| AI auto-tag | ✓ | ✗ | ✗ | ✗ | ✗ |
| Recorte de imagen | ✓ | ✓ | ✗ | ✗ | ✗ |
| Subida por partes | ✓ | ✗ | ✗ | ✗ | ✗ |
| Búsqueda de texto | ✓ | ✗ | ✗ | ✗ | ✗ |
| Modo oscuro | ✓ | ✗ | ⚠ | ✗ | ✗ |
| 16 idiomas | ✓ | ✓ | ✗ | ✗ | ✗ |
| PHP ≥ 8.1 | ✓ | ✓ | ✗ | ✓ | ✓ |
| Mantenimiento activo | ✓ | ✓ | ⚠ | ✗ | ✗ |
| UI moderna | ✓ | ✗ | ⚠ | ✗ | ✗ |