rawnoq/laravel-form-data-parser
最新稳定版本:1.0.0
Composer 安装命令:
composer require rawnoq/laravel-form-data-parser
包简介
A Laravel package for parsing multipart/form-data requests
README 文档
README
A professional Laravel package for parsing multipart/form-data requests, especially useful for handling PUT, PATCH, and DELETE requests with file uploads.
Installation
composer require rawnoq/laravel-form-data-parser
The package will be automatically discovered and registered by Laravel.
Features
- ✅ 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
Usage
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()
Example
// 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...
}
Supported Form Field Formats
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]=جون
How It Works
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
Supported Methods
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
Error Handling
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
Requirements
- PHP 8.2+
- Laravel 11.0+ or Laravel 12.0+
🧪 Testing
The package comes with a comprehensive test suite:
# Run tests
composer test
# Run tests with coverage
composer test-coverage
Test Coverage
The 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
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
统计信息
- 总下载量: 76
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-12