v1.22.0 — Código abierto · Licencia MIT

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.

PHP ≥ 8.1
Sin framework requerido
~3 KB
Tamaño del SDK
MIT
Licencia código abierto
16
Idiomas soportados
Vista previa

Ver en acción

FluxFiles desktop file manager UI
FluxFiles mobile file manager UI
FluxFiles create folder modal
Características

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.

Instalación rápida

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

Laravel WordPress React / Next.js Vue / Nuxt CKEditor 4 TinyMCE Any framework
Por qué FluxFiles

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