hozien/laravel-awesome-uploader
Production-ready, pluggable file uploader for Laravel with Blade/React/Vue components. Supports any file type, disk storage (local/S3), JSON API responses, optional DB records + soft deletes, policies/guest uploads, hash deduplication, thumbnails, image processing, and cleanup tools.
EnsureJsonResponse middleware to guarantee JSON responses from API endpointssave_to_db setting to true for better guest upload supportUPLOADER_ENABLE_LOGGING environment variable (defaults to false)A comprehensive file uploader for Laravel with enterprise-level features including deduplication, thumbnails, advanced security, and performance optimizations.
UPLOADER_DISK - Storage disk configurationUPLOADER_SAVE_TO_DB - Enable/disable database storageUPLOADER_CHECK_DUPLICATES - Enable/disable duplicate detectionUPLOADER_IMAGE_OPTIMIZATION - Enable/disable image optimizationUPLOADER_GENERATE_THUMBNAILS - Enable/disable thumbnail generationUPLOADER_STRICT_MIME - Enable strict MIME validationUPLOADER_GUEST_LIMIT - Set guest upload limitsUPLOADER_PAGINATION_LIMIT - Set pagination limitsUPLOADER_ENABLE_LOGGING - Enable detailed loggingPOST /api/uploader/upload - Upload single or multiple filesGET /api/uploader/uploads - List uploads with pagination and filteringDELETE /api/uploader/uploads/{id} - Delete specific uploadGET /api/uploader/stats - Upload statistics (authenticated users)POST /api/uploader/cleanup - Clean orphaned files (admin only)php artisan uploader:status - Show package status and configurationphp artisan uploader:cleanup - Clean up orphaned filesphp artisan uploader:thumbnails - Generate missing thumbnailsEnhanced event system for frontend integration:
files-selected - Files selected for uploadupload-start - Upload process beginsupload-success - Upload completed successfullyupload-error - Upload failedupload-progress - Upload progress updateduplicate-detected - Duplicate file detectedthumbnail-generated - Thumbnail generation completeIf you discover any security-related issues, please email security@example.com instead of using the issue tracker.
intervention/image for full image processing featuresThe MIT License (MIT). Please see License File for more information.
# Install the package
composer require hozien/laravel-awesome-uploader
# Publish assets
php artisan vendor:publish --provider="Hozien\Uploader\UploaderServiceProvider"
# Run migrations
php artisan migrate
# Check status
php artisan uploader:status
<!-- Add upload button -->
<button onclick="window.dispatchEvent(new Event('open-uploader'))">
Upload Files
</button>
<!-- Include uploader component -->
<x-uploader::popup :saveToDb="true" :multiple="true" />
<!-- Include required JS -->
<script src="{{ asset('vendor/uploader/popup.js') }}"></script>
<!-- Handle upload events -->
<script>
window.addEventListener("upload-success", (event) => {
const response = event.detail.response;
console.log("Upload successful:", response);
if (response.is_duplicate) {
console.log("File was a duplicate");
}
if (response.thumbnails) {
console.log("Thumbnails generated:", response.thumbnails);
}
});
</script>
Please see CONTRIBUTING.md for details on how to contribute to this project.
How can I help you explore Laravel packages today?