v1.22.0 — Mã nguồn mở · Giấy phép MIT

Trình quản lý file nhúng được mọi nơi

PHP ≥ 8.1 + Flysystem 3. Giao diện Alpine.js. Local, S3, Cloudflare R2. Nhúng với vài dòng JavaScript.

PHP ≥ 8.1
Không cần framework
~3 KB
Kích thước SDK
MIT
Giấy phép mã nguồn mở
16
Ngôn ngữ hỗ trợ
Xem trước

Xem thực tế

FluxFiles desktop file manager UI
FluxFiles mobile file manager UI
FluxFiles create folder modal
Tính năng

Mọi thứ một trình quản lý file hiện đại cần

Xây dựng cho lập trình viên cần sự linh hoạt.

Đa lưu trữ

Local, AWS S3, Cloudflare R2 qua Flysystem v3 — đổi bằng config, không sửa code.

Nhúng mọi nơi

iframe + SDK postMessage. UI độc lập dùng Alpine.js (không build). Dùng được với mọi framework.

JWT auth + phân quyền

Prefix đường dẫn theo user, quyền, whitelist disk, chế độ owner-only.

AI auto-tag

Claude / OpenAI vision — tự động alt text, tiêu đề, tags.

Cắt ảnh

Công cụ cắt ảnh với tỷ lệ khung hình sẵn.

Tối ưu ảnh

Tự tạo biến thể WebP — thumb, medium, large.

Upload presigned

Trình duyệt upload trực tiếp lên S3/R2 — không tốn bandwidth server.

Upload phân mảnh

S3 multipart cho file > 10MB.

Tìm kiếm toàn văn

SQLite FTS5 tìm theo tên, tiêu đề, tags.

Thao tác hàng loạt

Chọn nhiều file để di chuyển, sao chép, xóa, tải.

Chuyển giữa các disk

Sao chép/di chuyển giữa Local ↔ S3 ↔ R2.

Thùng rác

Xóa mềm có thể khôi phục, tự dọn dẹp.

SEO metadata

Title, alt, caption, tags — metadata object S3 (cloud) hoặc sidecar JSON (local). Tìm kiếm full-text.

Chế độ tối

Sáng / tối / tự động trong UI và SDK.

16 ngôn ngữ

Mặc định tiếng Anh. Đặt locale qua SDK, URL (?locale=), hoặc FLUXFILES_LOCALE. RTL cho tiếng Ả Rập.

Nhật ký kiểm toán

Ghi log tất cả hành động ghi.

Giới hạn tốc độ

Token bucket cho mỗi người dùng.

Hạn mức lưu trữ

Giới hạn dung lượng theo JWT claims.

BYOB bucket

Người dùng gắn S3/R2 riêng — credential mã hóa trong JWT (AES-256-GCM).

Phát hiện trùng file

Khớp SHA-256 bỏ qua upload trùng trừ khi bạn force ghi đè.

Làm mới token SDK

onTokenRefresh khi 401 — gộp refresh, thử lại, và updateToken() để đổi token chủ động.

Cài đặt nhanh

Chạy trong 2 phút

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=

Tương thích với

Laravel WordPress React / Next.js Vue / Nuxt CKEditor 4 TinyMCE Any framework
Tại sao FluxFiles

Xây dựng cho những gì người khác bỏ quên

Tính năng FluxFiles elFinder Laravel-FM RichFilemanager Responsive FM
S3 + R2 + Local
Nhúng mọi framework
JWT auth + phân quyền
SEO metadata
AI auto-tag
Cắt ảnh
Upload phân mảnh
Tìm kiếm toàn văn
Chế độ tối
16 ngôn ngữ
PHP ≥ 8.1
Đang maintain
UI hiện đại