djunehor/laravel-put-helper
Laravel middleware/helper that makes PUT request payloads easy to access, including uploaded files. Once installed, PUT input and files are available like normal request data, with support for validating file parameters using put_file.
Pros:
php://input rather than $_POST).Cons:
POST with raw input).ConvertEmptyStringsToNull).composer require + service provider registration (automatic in Laravel ≥5.5).ConvertEmptyStringsToNull or TrimStrings middleware if not sequenced properly.$request->file('key') not working could require workaround logic in validation/processing.Request class changes).json()->all() may still work).app/Http/Middleware/TrimStrings) that could interfere?json()->all() or input() (with php://input parsing) suffice for the use case?spatie/array-to-object) that offer broader functionality?composer.json).TrimStrings, ConvertEmptyStringsToNull).composer require djunehor/laravel-put-helper
config/app.php:
Djunehor\PutHelper\PutHelperServiceProvider::class
bootstrap/app.php.$request->file('key') with $request['key'] or $request->file_key in validation logic.$request->validate([
'avatar' => 'required|file|max:1024', // May need custom rule
]);
PutHelperMiddleware runs before ConvertEmptyStringsToNull to avoid data loss:
// In Kernel.php
protected $middleware = [
\Djunehor\PutHelper\PutHelperMiddleware::class,
// ... other middleware
];
multipart/form-data PUT requests.Content-Type: application/json or multipart/form-data).Route::put('/test', function (Request $request) {
return $request->all(); // Verify payload parsing
});
php://input manually:
public function handle(Request $request, Closure $next) {
if ($request->isMethod('put') || $request->isMethod('patch')) {
$input = file_get_contents('php://input');
$data = json_decode($input, true);
$request->merge($data);
}
return $next($request);
}
php://input parsing (e.g., Symfony updates).| Scenario | Impact | Mitigation |
|---|---|---|
| Laravel version upgrade breaks package | PUT requests fail silently | Fork/replace with custom middleware |
| File uploads via PUT fail | $request->file() returns null |
Use $request['file'] workaround |
| Malformed JSON crashes parser | 500 errors | Add try-catch in middleware |
| Middleware ordering conflicts | Data corruption | Test middleware sequence early |
| PHP 8.x type errors | Runtime exceptions | Downgrade PHP or patch locally |
put_file rule).How can I help you explore Laravel packages today?