webazin / filament-file-explorer
A comprehensive file explorer plugin for Filament 4 with multi-disk support
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/webazin/filament-file-explorer
Requires
- php: ^8.1|^8.2|^8.3
- filament/filament: ^4.0
- illuminate/contracts: ^11.0|^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.17
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
یک پلاگین کامل مدیریت فایل برای Filament 4 با پشتیبانی از چندین دیسک و امکانات پیشرفته.
ویژگیها
- ✅ پشتیبانی از چندین Storage Disk (Local, Public, S3, و...)
- ✅ آپلود فایل (تکی و چندتایی)
- ✅ دانلود فایل
- ✅ حذف فایل و پوشه
- ✅ ایجاد پوشه جدید
- ✅ تغییر نام فایل و پوشه
- ✅ ویرایش فایلهای متنی (txt, php, json, و...)
- ✅ نمایش اطلاعات فایل (سایز، تاریخ، نوع)
- ✅ جستجو در فایلها
- ✅ فیلتر بر اساس نوع فایل
- ✅ عملیات گروهی (Bulk Actions)
- ✅ مدیریت دسترسیها
- ✅ محدودیت سایز و نوع فایل
نصب
نصب پکیج از طریق Composer:
composer require webazin/filament-file-explorer
منتشر کردن فایلهای کانفیگ (اختیاری):
php artisan vendor:publish --tag="file-explorer-config"
استفاده
1. اضافه کردن پلاگین به Panel
در فایل app/Providers/Filament/AdminPanelProvider.php:
use Webazin\FileExplorer\FileExplorerPlugin; public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FileExplorerPlugin::make() ->disks(['public', 'local', 's3']) ->canUpload() ->canDownload() ->canDelete() ->canCreateFolder() ->canRename() ->canEdit() ->maxFileSize(10240) // 10MB ->allowedExtensions(['jpg', 'png', 'pdf', 'txt']) ); }
2. تنظیمات پیشفرض
همه تنظیمات به صورت پیشفرض فعال هستند. میتوانید آنها را غیرفعال کنید:
FileExplorerPlugin::make() ->disks(['public']) // فقط دیسک public ->canUpload(false) // غیرفعال کردن آپلود ->canDelete(false) // غیرفعال کردن حذف ->maxFileSize(5120); // محدودیت 5MB
3. پیکربندی Storage Disks
در فایل config/filesystems.php دیسکهای مورد نیاز را تنظیم کنید:
'disks' => [ 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), ], ],
امکانات پیشرفته
دسترسی به تنظیمات پلاگین
use Webazin\FileExplorer\FileExplorerPlugin; // دریافت دیسکهای فعال $disks = FileExplorerPlugin::get()->getDisks(); // بررسی دسترسیها if (FileExplorerPlugin::get()->hasUploadPermission()) { // کاربر میتواند فایل آپلود کند }
سفارشیسازی Resource
میتوانید Resource را extend کنید:
namespace App\Filament\Resources; use Webazin\FileExplorer\Resources\FileManagerResource as BaseFileManagerResource; class CustomFileManagerResource extends BaseFileManagerResource { protected static ?string $navigationIcon = 'heroicon-o-document'; protected static ?string $navigationGroup = 'محتوا'; // اضافه کردن متدهای سفارشی }
محدود کردن دسترسی
use Webazin\FileExplorer\Resources\FileManagerResource; // در AuthServiceProvider یا Policy Gate::define('viewFileManager', function ($user) { return $user->isAdmin(); }); // در Resource public static function canViewAny(): bool { return Gate::allows('viewFileManager'); }
پیکربندیهای اضافی
تنظیم فایل Config
return [ 'disks' => ['public', 'local'], 'permissions' => [ 'upload' => true, 'download' => true, 'delete' => true, 'create_folder' => true, 'rename' => true, 'edit' => true, ], 'max_file_size' => 10240, // KB 'allowed_extensions' => [ 'jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx', 'txt', 'zip' ], 'editable_extensions' => [ 'txt', 'md', 'json', 'xml', 'yml', 'php', 'js', 'css', 'html' ], ];
استفاده در محیط Production
برای استفاده در production، حتماً:
- فایل
.envرا پیکربندی کنید - دسترسیها را محدود کنید
- Backup منظم از فایلها داشته باشید
- از HTTPS استفاده کنید
- Validation مناسب برای آپلود فایل تنظیم کنید
مثالهای کاربردی
1. محدود کردن به فرمتهای تصویر
FileExplorerPlugin::make() ->allowedExtensions(['jpg', 'jpeg', 'png', 'gif', 'webp']) ->maxFileSize(2048); // 2MB
2. فقط خواندن (Read-only)
FileExplorerPlugin::make() ->canUpload(false) ->canDelete(false) ->canCreateFolder(false) ->canRename(false) ->canEdit(false);
3. چند دیسک با تنظیمات متفاوت
// Panel اول - فایلهای عمومی FileExplorerPlugin::make() ->disks(['public']) ->canDelete(false); // Panel دوم - مدیریت کامل FileExplorerPlugin::make() ->disks(['public', 'local', 's3']) ->canDelete() ->canEdit();
عیبیابی
مشکل آپلود فایل
اگر فایل آپلود نمیشود:
- بررسی کنید
php.iniمحدودیتupload_max_filesizeوpost_max_sizeمناسب است - دسترسیهای پوشه storage را چک کنید
- symlink را با
php artisan storage:linkایجاد کنید
مشکل نمایش فایلها
اگر فایلها نمایش داده نمیشوند:
- بررسی کنید دیسک در
config/filesystems.phpتعریف شده است - دسترسیهای Laravel را چک کنید
مجوز
MIT License
پشتیبانی
برای گزارش باگ یا درخواست ویژگی جدید، از GitHub Issues استفاده کنید.
توسعهدهنده
توسعه یافته توسط [Webazin]
مشارکت
مشارکتها استقبال میشود! لطفاً Pull Request ارسال کنید.