unisharp/laravel-filemanager
UniSharp Laravel Filemanager adds a responsive web UI to browse, upload, manage, and select files/images in Laravel apps. Supports popular editors, configurable disks/paths, customization, and events—ideal for CMS/admin panels.
composer require unisharp/laravel-filemanager
php artisan vendor:publish --tag=lfm_config --tag=lfm_public
php artisan storage:link
routes/web.php):
Route::group(['prefix' => 'laravel-filemanager', 'middleware' => ['web', 'auth']], function () {
\UniSharp\LaravelFilemanager\Lfm::routes();
});
/laravel-filemanager/demo to test the UI.vendor/unisharp/laravel-filemanager/src/views/demo.blade.php).WYSIWYG Integration:
filebrowserImageBrowseUrl/filebrowserUploadUrl for image/file handling.
CKEDITOR.replace('editor', {
filebrowserImageBrowseUrl: '/laravel-filemanager?type=Images',
filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token={{csrf_token()}}'
});
file_picker_callback to open the filemanager as a modal.
file_picker_callback: (callback, value, meta) => {
tinyMCE.activeEditor.windowManager.openUrl({
url: `/laravel-filemanager?type=${meta.filetype === 'image' ? 'Images' : 'Files'}`,
onMessage: (api, message) => callback(message.content)
});
}
Standalone Upload Button:
<iframe src="/laravel-filemanager?type=Files" width="100%" height="500px"></iframe>
window.open('/laravel-filemanager?type=Images', '_blank', 'width=800,height=600');
Multi-User Mode:
lfm_disk and lfm_user_folder in config/lfm.php:
'lfm_disk' => 'public',
'lfm_user_folder' => 'users/{user_id}/',
lfm_shared_folder to a public directory (e.g., 'shared/').Cloud Storage:
lfm_disk to your configured disk:
'lfm_disk' => 's3',
config/filesystems.php.config/lfm.php:
'routes' => [
'prefix' => 'custom-filemanager',
'upload' => 'upload',
'show' => 'show',
],
Route::group(['prefix' => 'laravel-filemanager', 'middleware' => ['web', 'auth', 'verified']], function () {
\UniSharp\LaravelFilemanager\Lfm::routes();
});
config/lfm.php:
'locale' => 'es', // e.g., 'es' for Spanish
php artisan vendor:publish --tag=lfm_view
Then edit resources/views/vendor/lfm/....Namespace Issues:
Class not found errors:
composer remove unisharp/laravel-filemanager && composer require unisharp/laravel-filemanager
php artisan config:clear
UniSharp (not Unisharp) is used in autoloaded code.Permission Errors:
storage/ and public/ directories are writable:
chmod -R 775 storage/ public/
CSRF Token:
_token={{csrf_token()}} in upload URLs for security:
filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token={{csrf_token()}}'
Image Processing:
gd or imagick PHP extensions. Test with:
php -m | grep -E 'gd|imagick'
intervention/image v4+, ensure PHP 8.3+ is used.Route Conflicts:
php artisan route:clear
laravel-filemanager prefix).Logs:
storage/logs/laravel.log for upload errors or permission issues.config/lfm.php:
'debug' => env('APP_DEBUG', false),
Network Tab:
Content-Type headers (e.g., multipart/form-data).Storage Paths:
lfm_filesystem_disk and lfm_filesystem_folder in config/lfm.php point to valid paths:
'lfm_filesystem_disk' => 'public',
'lfm_filesystem_folder' => 'uploads',
Events:
lfm.uploaded):
\UniSharp\LaravelFilemanager\Events\AfterUpload::class => [YourHandler::class, 'handleUpload'],
Custom Validation:
validateUpload method in a service provider:
\UniSharp\LaravelFilemanager\Services\LfmService::macro('validateUpload', function ($request) {
$request->validate([
'file' => ['required', 'mimes:jpg,png,pdf', 'max:10240'], // Custom rules
]);
});
File Processing:
lfm.afterUpload event to process files post-upload:
\UniSharp\LaravelFilemanager\Events\AfterUpload::class => function ($event) {
// Example: Generate a thumbnail
\Image::make($event->file->getRealPath())->resize(100, 100)->save(public_path('thumbs/' . $event->file->getClientOriginalName()));
};
UI Customization:
lfm::partials.upload) in resources/views/vendor/lfm/.// In config/lfm.php
'javascript' => [
'custom.js' => '/path/to/custom.js',
],
API Integration:
LfmService for programmatic file operations:
use UniSharp\LaravelFilemanager\Services\LfmService;
$lfm = app(LfmService::class);
$files = $lfm->getFiles('Images', '/path/to/folder');
How can I help you explore Laravel packages today?