Laravel integration for portavice/filesanitizer.
The upstream package is installed as portavice/filesanitizer and uses the class Portavice\FileSanitizer\FileSanitizer.
composer require portavice/laravel-filesanitizer
php artisan vendor:publish --tag=filesanitizer-configuse Portavice\LaravelFileSanitizer\Facades\FileSanitizer;
$result = FileSanitizer::process(storage_path('app/uploads/file.pdf'), null, true);
if (! FileSanitizer::safe($result)) {
foreach (FileSanitizer::issues($result) as $issue) {
echo is_object($issue) ? $issue->code : ($issue['code'] ?? 'unsafe');
echo PHP_EOL;
}
}use Portavice\LaravelFileSanitizer\Rules\SafeFile;
$request->validate([
'upload' => ['required', 'file', new SafeFile()],
]);Or as a validator string rule:
$request->validate([
'upload' => ['required', 'file', 'safe_file'],
]);$result = $request->file('upload')->sanitize();return [
'sanitize_always' => env('FILESANITIZER_SANITIZE_ALWAYS', false),
];This config will always sanitize files when set to true, even if the file is already considered safe. This can be useful if you want to ensure that all files are sanitized, regardless of their initial safety status.