v1.22.0 — Open Source · Licença MIT

O gerenciador de arquivos que funciona em qualquer lugar

PHP ≥ 8.1 + Flysystem 3. UI Alpine.js. Local, S3, Cloudflare R2. Incorpore com poucas linhas de JavaScript.

PHP ≥ 8.1
Sem framework necessário
~3 KB
Tamanho do SDK
MIT
Licença open source
16
Idiomas suportados
Demonstração

Veja em ação

FluxFiles desktop file manager UI
FluxFiles mobile file manager UI
FluxFiles create folder modal
Recursos

Tudo que um gerenciador de arquivos moderno precisa

Feito para desenvolvedores que precisam de flexibilidade.

Multi-armazenamento

Local, AWS S3, Cloudflare R2 via Flysystem v3 — troque na config, sem mudar código.

Incorpore em qualquer lugar

iframe + SDK postMessage. UI standalone usa Alpine.js (sem build). Funciona com qualquer framework.

Auth JWT + escopo

Prefixo de caminho por usuário, permissões, whitelist de discos, modo somente proprietário.

AI auto-tag

Claude / OpenAI vision — alt text, título, tags automáticos.

Recorte de imagem

Ferramenta de recorte com proporções predefinidas.

Otimização de imagem

Variantes WebP automáticas — thumb, médio, grande.

Uploads pré-assinados

Navegador faz upload direto para S3/R2 — zero bandwidth no seu servidor.

Upload em partes

S3 multipart para arquivos > 10MB.

Busca em texto completo

SQLite FTS5 em nomes, títulos, tags.

Operações em massa

Seleção múltipla: mover, copiar, excluir, baixar.

Transferência cross-disk

Copiar/mover entre Local ↔ S3 ↔ R2.

Lixeira

Exclusão recuperável com limpeza automática.

Metadados SEO

Título, alt, legenda, tags — metadados de objeto S3 (nuvem) ou JSON sidecar (local). Busca em texto completo.

Modo escuro

Claro / escuro / auto na UI e SDK.

16 idiomas

Inglês por padrão. Defina locale via SDK, URL (?locale=) ou FLUXFILES_LOCALE. RTL para árabe.

Log de auditoria

Todas as ações de escrita registradas.

Limitação de taxa

Token bucket por usuário para proteção da API.

Cota de armazenamento

Limites por usuário via JWT claims.

Buckets BYOB

Usuários trazem seu próprio S3/R2 — credenciais criptografadas no JWT (AES-256-GCM).

Detecção de duplicatas

Correspondência SHA-256 pula uploads redundantes exceto sobrescrita forçada.

Atualização de token SDK

onTokenRefresh em 401 — refresh coalescido, retry e updateToken() para rotação proativa.

Instalação rápida

Funcionando em 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=

Funciona com

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

Feito para o que os outros esqueceram

Recurso FluxFiles elFinder Laravel-FM RichFilemanager Responsive FM
S3 + R2 + Local
Incorporar em qualquer framework
Auth JWT + escopo
Metadados SEO
AI auto-tag
Recorte de imagem
Upload em partes
Busca em texto
Modo escuro
16 idiomas
PHP ≥ 8.1
Mantido ativamente
UI moderna