A professional Laravel package for parsing multipart/form-data requests, especially useful for handling PUT, PATCH, and DELETE requests with file uploads.
composer require rawnoq/laravel-form-data-parserThe package will be automatically discovered and registered by Laravel.
- ✅ Automatically parses
multipart/form-datarequests - ✅ Supports nested form fields with bracket notation (e.g.,
name[ar],name[en],items[0][name]) - ✅ Handles file uploads in PUT/PATCH/DELETE requests
- ✅ Converts flat keys to nested arrays automatically
- ✅ Robust error handling and edge case support
- ✅ Works seamlessly with Laravel's request handling
- ✅ Compatible with Laravel 11+ and Laravel 12+
- ✅ No configuration required
The package automatically registers a middleware that parses multipart/form-data requests. No configuration needed!
The middleware automatically:
- Parses multipart/form-data content
- Extracts form fields and files
- Converts bracket notation to nested arrays
- Makes data available via
$request->input()and$request->file()
// In your controller
public function update(Request $request)
{
// Access form data
$name = $request->input('name');
$nameAr = $request->input('name.ar'); // Nested notation
$itemName = $request->input('items.0.name'); // Array notation
// Access files
$avatar = $request->file('avatar');
$documents = $request->file('documents'); // Array of files
// Process your request...
}The package supports various form field formats:
// Simple fields
name=John
// Nested fields
name[ar]=جون
name[en]=John
// Array fields
items[0][name]=Item 1
items[1][name]=Item 2
// Mixed with files
avatar=file
name[ar]=جونThe middleware intercepts requests with multipart/form-data content type and:
- Extracts the boundary from the request (multiple methods for reliability)
- Parses each part of the multipart data
- Identifies files vs regular form fields
- Creates temporary files for uploaded files
- Converts bracket notation to nested arrays
- Merges parsed data into the request object
- Handles errors gracefully without breaking the request
The middleware processes requests for methods other than:
- GET
- HEAD
- POST (Laravel handles this natively)
This means it works with:
- PUT
- PATCH
- DELETE
- And other custom methods
The package includes comprehensive error handling:
- Invalid boundary detection with multiple fallback methods
- File creation errors are caught and handled
- Temporary file cleanup on errors
- Graceful degradation - if parsing fails, the request continues normally
- Debug logging in development mode
- PHP 8.2+
- Laravel 11.0+ or Laravel 12.0+
The package comes with a comprehensive test suite:
# Run tests
composer test
# Run tests with coverage
composer test-coverageThe test suite includes:
- ✅ Form data parsing tests
- ✅ Nested fields and bracket notation tests
- ✅ File upload handling tests
- ✅ Middleware integration tests
- ✅ ServiceProvider registration tests
- ✅ Error handling tests
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.