mmes-design/filament-file-manager
Installation
composer require mmes-design/filament-file-manager
Register the plugin in your PanelServiceProvider:
public function panel(Panel $panel): Panel
{
return $panel->plugins([
FileManagerPlugin::make(),
]);
}
Publish Config
php artisan vendor:publish --provider="MmesDesign\FilamentFileManager\FilamentFileManagerServiceProvider"
Configure storage paths, permissions, and allowed extensions in config/filament-file-manager.php.
First Use Case
Access the file manager via /admin/file-manager (default route). Upload a test file (e.g., test.txt) to verify basic functionality.
File Uploads in Forms
Use the FilePicker component in Filament resources:
use MmesDesign\FilamentFileManager\Forms\Components\FilePicker;
FilePicker::make('image')
->directory('images')
->multiple()
->required(),
Rich Editor Integration
Embed files directly in RichEditor or MarkdownEditor:
RichEditor::make('content')
->fileManagerEnabled()
->toolbarButtons([
// Include 'insertFile' button
]),
Bulk Operations Select multiple files/folders (Ctrl+A) and perform actions like:
Delete)Custom File Manager Page Extend the default page for domain-specific needs:
FileManagerPlugin::make()
->defaultView('grid') // or 'list'
->allowedExtensions(['jpg', 'png', 'pdf'])
->maxFileSize(10) // in MB
->maxUploadCount(5),
storage config:
'storage' => [
'disk' => 's3',
'path' => 'public/files',
],
FileManagerPlugin::make()
->permissions([
'access' => fn (User $user) => $user->can('manage-files'),
'upload' => fn (User $user) => $user->can('upload-files'),
]),
FileManagerPlugin::make()
->listenForUploads(fn (UploadedFile $file) => Log::info('File uploaded:', ['file' => $file->getClientOriginalName()]));
Path Sanitization
config/filament-file-manager.php for allowed characters.Permission Denied Errors
chmod -R 755 storage/app/public
manage-files).Large File Uploads
.env if needed:
UPLOAD_MAX_FILESIZE=20M
POST_MAX_SIZE=20M
Thumbnail Generation
->thumbnailGenerators([
\MmesDesign\FilamentFileManager\ThumbnailGenerators\ImageThumbnailGenerator::class,
]),
Logs: Enable debug mode in config/filament-file-manager.php:
'debug' => env('FFM_DEBUG', false),
Check storage/logs/laravel.log for upload/move errors.
Route Conflicts: Ensure /admin/file-manager doesn’t clash with existing routes. Override the route:
FileManagerPlugin::make()
->route('custom-file-manager'),
Custom Views Override the default grid/list views by publishing assets:
php artisan vendor:publish --tag=filament-file-manager-views
Modify resources/views/vendor/filament-file-manager/....
File Preview Handlers
Add support for custom file types (e.g., .docx):
FileManagerPlugin::make()
->previewHandlers([
\App\PreviewHandlers\DocxPreviewHandler::class,
]),
API Endpoints Extend the underlying API for custom logic:
FileManagerPlugin::make()
->apiRoute('custom-file-manager-api')
->apiMiddleware([\App\Http\Middleware\CheckFilePermissions::class]),
FileManagerPlugin::make()
->softDeletes()
->softDeleteQuery(fn (Builder $query) => $query->whereNull('deleted_at')),
F2 to rename, Esc to cancel).FileManagerPlugin::make()
->translations([
'it' => [
'messages' => [
'upload_success' => 'Caricamento completato!',
],
],
]),
How can I help you explore Laravel packages today?