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.
Veja em ação
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.
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
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 | ✓ | ✗ | ⚠ | ✗ | ✗ |