darvinstudio/fileman
Laravel file manager integration for browsing, uploading, renaming and deleting files via a simple UI and API. Helps manage storage disks and media assets from within your app, with configurable paths, permissions and adapters for common filesystem backends.
Installation
composer require darvinstudio/fileman
composer.json and vendor/).Basic Usage
Fileman::upload(), Fileman::delete(), Fileman::move()).use Darvinstudio\Fileman\Facades\Fileman;
$path = Fileman::upload('path/to/file', 'destination/dir');
Configuration
config/fileman.php) and update storage paths, disk settings, or permissions.local disk; override if using S3, FTP, etc.First Use Case
public function upload(Request $request) {
$file = $request->file('file');
$path = Fileman::upload($file->getRealPath(), 'uploads/');
return response()->json(['path' => $path]);
}
File Uploads with Validation
Validator or FormRequest:
$request->validate(['file' => 'required|mimes:jpg,png|max:2048']);
$path = Fileman::upload($request->file('file'), 'uploads/validated/');
Batch Operations
$files = $request->file('files');
foreach ($files as $file) {
Fileman::upload($file, 'batch/');
}
Integration with Storage Disks
Storage facade alongside Fileman for disk-agnostic operations:
$path = Fileman::upload($file, 's3://bucket/');
Storage::disk('s3')->put($path, file_get_contents($file));
File Metadata Handling
$metadata = Fileman::getMetadata('path/to/file');
Event-Based Processing
file.uploaded) via Laravel’s Event system:
event(new FileUploaded($path));
Fileman interfaces to custom implementations for testing.php artisan fileman:cleanup).Permission Issues
755 permissions. Use chmod or Laravel’s Storage::makeDirectory()..env or config/filesystems.php.Path Handling
storage_path(), public_path(), or Fileman::resolvePath().'uploads/' vs 'uploads').Overwriting Files
Fileman::uniqueName() to avoid collisions:
$path = Fileman::upload($file, 'uploads/', ['unique' => true]);
Memory Limits
memory_limit. Use chunked uploads or Storage::disk()->put() for streaming.Testing
Fileman in tests by binding a fake implementation in phpunit.xml or TestCase:
$this->app->bind('Darvinstudio\Fileman\Contracts\Fileman', function() {
return new FakeFileman();
});
Log File Operations
APP_DEBUG=true) and check logs for errors.\Log::debug('File uploaded to', ['path' => $path]);
Verify Disk Configuration
php artisan storage:link if using symbolic links.php artisan storage:disk --list
Custom Drivers
Fileman::extend('dropbox', function() {
return new DropboxDriver();
});
Hooks/Events
events:
Event::listen('fileman.uploaded', function($event) {
// Post-upload logic (e.g., generate thumbnail)
});
Configuration Overrides
php artisan vendor:publish --tag=fileman-config
config/fileman.php.How can I help you explore Laravel packages today?