v1.22.0 — Открытый код · Лицензия MIT

Файловый менеджер, встраиваемый куда угодно

PHP ≥ 8.1 + Flysystem 3. UI Alpine.js. Локальное, S3, Cloudflare R2. Встраивание за несколько строк JavaScript.

PHP ≥ 8.1
Без фреймворков
~3 KB
Размер SDK
MIT
Открытая лицензия
16
Поддержка языков
Демо

Посмотрите в действии

FluxFiles desktop file manager UI
FluxFiles mobile file manager UI
FluxFiles create folder modal
Возможности

Всё, что нужно современному файловому менеджеру

Создан для разработчиков, которым нужна гибкость.

Мульти-хранилище

Локальное, AWS S3, Cloudflare R2 через Flysystem v3 — меняйте в конфиге без правки кода.

Встраивайте куда угодно

iframe + postMessage SDK. Автономный UI на Alpine.js (без сборки). С любым фреймворком.

JWT авторизация + скоупинг

Префикс пути, права, белый список дисков, режим только владелец.

AI авто-теги

Claude / OpenAI vision — автоматический alt-текст, заголовок, теги.

Обрезка изображений

Инструмент обрезки с предустановками пропорций.

Оптимизация изображений

Автоматические WebP-варианты — миниатюра, средний, большой.

Предподписанные загрузки

Браузер загружает напрямую в S3/R2 — нулевая нагрузка на ваш сервер.

Загрузка частями

S3 multipart для файлов > 10МБ.

Полнотекстовый поиск

SQLite FTS5 по именам, заголовкам, тегам.

Массовые операции

Множественный выбор: перемещение, копирование, удаление, скачивание.

Кросс-диск перенос

Копирование/перемещение между Локальным ↔ S3 ↔ R2.

Корзина

Восстановимое удаление с автоочисткой.

SEO метаданные

Заголовок, alt, подпись, теги — метаданные S3 (облако) или sidecar JSON (локально). Полнотекстовый поиск.

Тёмный режим

Светлая / тёмная / авто в UI и SDK.

16 языков

По умолчанию английский. Локаль через SDK, URL (?locale=) или FLUXFILES_LOCALE. RTL для арабского.

Журнал аудита

Все действия записи логируются.

Ограничение скорости

Token bucket для каждого пользователя.

Квота хранилища

Лимиты для каждого пользователя через JWT claims.

BYOB бакеты

Свой S3/R2 пользователя — учётные данные в JWT (AES-256-GCM).

Обнаружение дубликатов

Совпадение SHA-256 пропускает лишние загрузки кроме принудительной перезаписи.

Обновление токена SDK

onTokenRefresh при 401 — объединённое обновление, повтор, updateToken().

Быстрая установка

Запуск за 2 минуты

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=

Работает с

Laravel WordPress React / Next.js Vue / Nuxt CKEditor 4 TinyMCE Any framework
Почему FluxFiles

Создан для того, о чём другие забыли

Функция FluxFiles elFinder Laravel-FM RichFilemanager Responsive FM
S3 + R2 + Локальное
Встраивание в любой фреймворк
JWT авторизация + скоупинг
SEO метаданные
AI авто-теги
Обрезка изображений
Загрузка частями
Полнотекстовый поиск
Тёмный режим
16 языков
PHP ≥ 8.1
Активно поддерживается
Современный UI