Search by

microweber-packages / microweber-file-uploader

boksiora

Standalone Laravel file upload service with MIME validation, size limits, security checks, chunked uploads, and image processing

Package info

github.com/microweber-packages/microweber-file-uploader

Homepage

pkg:composer/microweber-packages/microweber-file-uploader

Statistics

Installs: 88

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-03 11:40 UTC

This package is auto-updated.

Last update: 2026-11-03 17:06:41 UTC


README

A standalone Laravel package for secure file uploads with comprehensive validation.

Features

  • MIME type validation – Validates actual file content, not just extensions
  • File size limits – Configurable per-category size limits
  • Security checks – Blocks dangerous file types (PHP, EXE, etc.)
  • Extension-MIME mismatch detection – Catches disguised files
  • Chunked upload support – Compatible with Plupload and similar JS uploaders
  • Image processing – EXIF stripping, auto-rotation, SVG sanitization
  • Auto-resize – Automatic image resizing for large uploads
  • Configurable – Fully configurable via config/file-uploader.php

Installation

composer require microweber-packages/microweber-file-uploader

The package auto-discovers its service provider and facade.

Usage

Via the Container

$uploader = FileUploader::;

// Upload a file from a request
$result = $uploader->upload($request, [
    'targetDir' => storage_path('app/public/uploads'),
    'allowedFileTypes' => ['jpg', 'png', 'pdf'],
    'autoResize' => true,
]);

if ($result['success']) {
    echo "Uploaded: " . $result['name'];
} else {
    echo "Error: " . $result['error_message'];
}

Via the Facade

use MicroweberPackages\FileUploader\Facades\FileUploader;

$result = FileUploader::upload($request);

Validation Only

$validator = FileUploader::->validator();

// Check MIME type
$result = $validator->validateMimeType('/path/to/file.jpg', ['images']);

// Check file size
$result = $validator->validateSizeByCategory(filesize($path), 'images');

// Check dangerous extension
$isDangerous = $validator->isDangerousExtension('file.php'); // true

// Get Laravel validation rules
$rules = $validator->getValidationRules(['images'], '10M');

Configuration

Publish the config file:

php artisan vendor:publish --tag=file-uploader-config

Testing

composer test

License

MIT